这段代码计算什么??
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);
}
这是我写的汉诺塔递归函数:
////////////////////////////////////////////////////
//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()函数结束 感谢回复
如何求解这段代码的递推式????? 嗯,看出来了...是汉诺塔吧... 如果说你要看递推公式,可以看我代码里的注释,这就可以看出递推公式,
写递归代码就与高中数学里的递推数列类似,首先要给出第一项A1,这就好比递归结束的条件,
然后再去递推,当然,别误会,只是打个比方,递推和递归仍然是两个概念。
你可以自己画图理解我写的注释,已经很详细了...
页:
[1]
