鱼C论坛

 找回密码
 立即注册
查看: 2514|回复: 1

有关递归的问题?

[复制链接]
发表于 2012-8-6 18:44:29 | 显示全部楼层 |阅读模式
1鱼币
本帖最后由 江南才子 于 2012-8-6 18:45 编辑

输入h=3,就是不理解x,y,z的值随n值的变化,当调试时  ,(n=3,x=97,y=98,z=99).(n=2,x=97,y=99,z=98)(n=1,x=97,y=98,z=99) (n=2,x=97.y=99,z=98)  (n=1,x=99,y=97,z=98) 等等,每次x,y,z,都发生了变化,不理解如何变化的,求解???
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');
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-6 20:03:45 | 显示全部楼层
这个是汉诺塔。因为每次调用的顺序不同啊。所以就会发生变化的啊。你自己尝试下汉诺塔的移动。就会明白为什么这样调用的了。不用移动多。三个就够了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 01:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表