qqwuming 发表于 2008-9-3 09:19

这段代码计算什么??

void  H(int n, int A , int B, int C )
{
    if(n>0)
{

    H(n-1, A, C B);
    MOVE(n, A , B);
    H(n-1, C, A, B);
}

qqwuming 发表于 2008-9-3 14:03

继续提问.................

geninsf009 发表于 2008-9-3 21:47

貌似是汉诺塔的递归程序:

这是我写的汉诺塔递归函数:
////////////////////////////////////////////////////
//Hanoi()函数   递归求解汉诺塔问题
//n:盘子的个数  A,B,C表示三个柱子
//即把A上所有的盘子,以B为过渡全部移到C上
////////////////////////////////////////////////////
void Hanoi(int n,char A,char B,char C)
{
        if(n==1)
        {
                //递归结束的条件
                cout<<"把顶部的盘子从柱子:"<<A
                <<"------->"<<C<<endl;
        }
        else
        {
                //以C作为过渡把A上的上面n-1个盘子移到B上
                Hanoi(n-1,A,C,B);
                cout<<"把顶部的盘子从柱子:"<<A
                <<"------->"<<C<<endl;
                //以A作为过渡把B上所有的n-1个盘子全部移到C上
                Hanoi(n-1,B,A,C);
        }
};
/////////////////////////////////////Hanio()函数结束

qqwuming 发表于 2008-9-4 10:18

感谢回复

如何求解这段代码的递推式?????

blueboy82006 发表于 2008-9-4 12:24

嗯,看出来了...是汉诺塔吧...

geninsf009 发表于 2008-9-4 22:51

如果说你要看递推公式,可以看我代码里的注释,这就可以看出递推公式,

写递归代码就与高中数学里的递推数列类似,首先要给出第一项A1,这就好比递归结束的条件,

然后再去递推,当然,别误会,只是打个比方,递推和递归仍然是两个概念。

你可以自己画图理解我写的注释,已经很详细了...

页: [1]

编程论坛