use*_*r11 2 c algorithm recursion function
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);
}
}
Run Code Online (Sandbox Code Playgroud)
在这个编码中,我对递归调用以及如何在函数调用中处理字符和整数感到困惑,任何人都可以用简单的演示来解释.
一般来说 - 要解决n个板块的河内问题你应该:
当塔被命令时,#1与n-1而不是n个板相同的问题A,C,B
#3与n-1相同而不是n个板时,当塔被命令为A,B,A时
例如:
对于n = 3
从A到C 1.将2板
2.将单平板上A到B
3.移动从C 2块板,以乙
#1映射到呼叫TOH(n-1,x,z,y);
#2映射到呼叫printf("n%c -> %c",x,y);
#3映射到呼叫TOH(n-1,z,y,x);
编辑 - 示例
所以这将是调用的顺序(缩进是一个递归调用)