Reggie 发表于 2016-2-22 06:09:30

汉诺威算法递归问题

#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一直在变?

ligen超越 发表于 2016-2-22 14:54:47

出去的条件就是n==1啊{:5_97:}

Reggie 发表于 2016-2-22 23:28:24

ligen超越 发表于 2016-2-22 14:54
出去的条件就是n==1啊

我也以为是n==1出去,但是我一步一步调试,并不是。。。
页: [1]
查看完整版本: 汉诺威算法递归问题