汉诺塔的基本思想就是
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’);
}
来源:51CTO
作者:北派胖子
链接:https://blog.csdn.net/qq_43568790/article/details/100147676