程序如下:
#include
void main()
{
void hanoi(int n,char one,char two,char three);//函数声明
int m;
printf("input the nuber of deskes:");
scanf("%d",&m);
printf("The step to moving %d deskes:\n",m);
hanoi(m,’A’,’B’,’C’);//函数调用
}
void hanoi(int n,char one,char two,char three)
{
void move(char x,char y);//函数声明
if(n==1)move(one,three);//条件成立,调用“void move(char x,char y)”函数
else
{
hanoi(n-1,one,three,two);//调用函数本身
move(one,three);//调用“void move(char x,char y)”函数
hanoi(n-1,two,one,three);//调用函数本身
}
}
void move(char x,char y)
{
printf("%c--->%c\n",x,y);
}
我不明白的地方是函数是调用本身会发生了什么,如果输入desk值为2则输出:
A----->B
A----->C
B----->C
由此可见,整个程序三次调用了“void move(char x,char y)”,我只了解最后一次n==1时是如何调用的,其余两次就不了解了,还有
“void move(char x,char y)”中的x,y是怎样分别变成A、B、C的?这里好像没有形参与实参对应。我对于怎样搬盘子理解,就是对程序不
理解。帮忙解惑,我搞了很久都不明白。
个人正在自学,本不应该来天涯这么深水的地方...
人打赏
0人 点赞
主帖获得的天涯分:0
举报 |
楼主
|
楼主发言:1次 发图:0张 | 添加到话题 |