汉诺塔问题(分治递归思想)
汉诺塔的基本思想就是 1.先把上面n-1个通过c转移到b(因为我的c里面要放n,也就是最大的那个) 2.把a中的 n(最大的那个)移动到c 3.再把b中的n-1个通过a移动到c; 整个过程就结束了,然后递归调用这个函数,每一层递归都执行这三个步骤 最后n=1的时候,想象一下,n=1的时候,是不是把c中的1直接移到c中即可,所以这就是终止条件。今天可算是理解了汉诺塔的原理了!!!` `` #include using namespace std; void movef(int n,char a,char b){ cout<<“把”<<n<<“从”<<a<<“移动到”<<b<<endl; } void haniod(int n,char a,char b,char c){ if(n==1){ movef(n,a,c); }else{ haniod(n-1,a,c,b); movef(n,a,c); haniod(n-1,b,a,c); } } int main(){ int n; cin>>n; haniod(n,‘a’,‘b’,‘c’); } 来源: https://blog.csdn.net/qq_43568790/article/details/100147676