汉诺威算法递归问题
#include <iostream>using namespace std;
void moveCup(int n,char Base1, char Base2, char Base3)
{
if (n==1)
{
cout<< "move cup 1 from Base "<< Base1 <<" to Base "<< Base2<<endl;
return ;
}
moveCup(n-1,Base1,Base3,Base2);
cout<<"move cup "<<n<<" from Base "<<Base1 <<" to Base "<< Base2<<endl;
moveCup(n-1,Base3,Base2,Base1);
}
int main()
{
int n = 3;
char A='A', B='B',C='C';
moveCup(n,A,B,C);
return 0;
}
这个是老师给的汉诺威算法的code,我尝试debug理解这个算法,但还是不太懂在里面运行的时候,一会return回去了,n变为了2,一会就自动出去了,好复杂啊?这个算法几乎看不出来从递归函数出去的条件是什么,因为n一直在变? 出去的条件就是n==1啊{:5_97:} ligen超越 发表于 2016-2-22 14:54
出去的条件就是n==1啊
我也以为是n==1出去,但是我一步一步调试,并不是。。。
页:
[1]