在我看来,递归这个东西就是栈的进出;
在进栈之前标记状态,输入到栈中;
#include
using namespace std;
void hanoi(int n,char x,char y,char z){if(n==1){cout<"<hanoi(n-1,x,z,y);cout<"<int n;char a='a',b='b',c='c';cin>>n;hanoi(n,a,b,c);return 0;
}
void hanoi(int n,char x,char y,char z){
1 if(n==1){
2 cout<"<
5 hanoi(n-1,x,z,y);
6 cout<"<
//解释:进栈的当前状态;
//我这个只是关于3阶hanoi的解释;
1、start:(5行,3,'a','b','c');//n==3;
//n-1,x,z,y:表示的hanoi(n-1,x,z,y);
//同理:hanoi(n-1,y,x,z);
2、两个节点:
n-1,x,z,y:(5行,2,'a','c','b')
n-1,y,x,z:(7行,2,'b','a','c')
3、四个节点
n==1:(1,'a','b','c')
move:(1,'c','a','b')
n1==1:(1,'b','c','a')
move1:(1,'a','b','c')
3
A->C
A->B
C->B
A->C
B->A
B->C
A->C
这个hanoi塔递归是我在b站上找的视频,让我明白了递归的原理,不再只停留在自己用自己;
链接:懒猫老师-C语言-汉诺塔问题详解(hanoi)_哔哩哔哩_bilibili
有错误,请指正;
上一篇:MYSQL必知必会 | 查询相关