void TOH(int n,char x,char y,char z);
void main()
{
int n;
printf("nEnter number of plates:");
scanf("%d",&n);
TOH(n,'A','B','C');
getch();
}
void TOH(int n,char x,char y,char z)
{
if(n>0)
{
TOH(n-1,x,z,y);
printf("n%c -> %c",x,y);
TOH(n-1,z,y,x);
}
}
在这个编码中,我对递归调用以及字符和字符如何混淆 整数在函数调用中处理,任何人都可以用简单的演示来解释。
答案 0 :(得分:5)
一般来说 - 要解决n个板块的河内问题你应该:
例如:
对于n = 3
1.将2板从A移动到C
2.将A上的单个板移动到B
3.将2个板从C移动到B
#1映射到呼叫TOH(n-1,x,z,y);
#2映射到呼叫printf("n%c -> %c",x,y);
#3映射到呼叫TOH(n-1,z,y,x);
编辑 - 示例
所以这将是调用的顺序(缩进是递归调用)