汉诺塔程序执行看不明白,求助!!
move(int n,int x,int y,int z){
if(n==1)
printf("%c-->%c\n",x,z);
else
{
move(n-1,x,z,y);
printf("%c-->%c\n",x,z);
move(n-1,y,x,z);
}
}
main()
{
int h;
printf("\ninput number:\n");
scanf("%d",&h);
printf("the step to moving %2d diskes:\n",h);
move(h,'a','b','c');
}
这是汉诺塔的源码,算法我明白,但用程序表示却云里雾里了,假设n=1,那么直接打印a->c,实参与形参对应一致,但是n=2时,执行move(n-1,x,z,y);实参与形参对应发生了变化,但是调用自己什么呢?调用n=1么?那么不就是a->c么?
哪位能以n=2时程序如何执行的详细解释下么?谢谢了
关于n!的递归调用我还能明白,这个递归调用我关键是都不知道调用什么。。。真是羞愧啊
[ 本帖最后由 account 于 2010-4-17 22:53 编辑 ]