C语言--汉诺塔程序执行步骤

voidmove(charx,chary){printf("%c--->%c\n",x,y);}voidhanoi(intn,charone,chartwo,charth... void move( char x, char y )

{
printf( "%c ---> %c\n", x, y );
}

void hanoi( int n, char one, char two, char three )

{
if ( n == 1 ) move( one , three )

else

{
hanoi( n - 1, one , three, two );

move( one, three );

hanoi( n - 1, two, one, three );
}
}

这个程序的运行步骤是如何进行的,各个参数是如何传递的.
帮烦大家给个详细的解说.谢谢了
展开
 我来答
liujun_7177
推荐于2017-12-15 · TA获得超过649个赞
知道小有建树答主
回答量:459
采纳率:0%
帮助的人:637万
展开全部
这个问题你要先把递归搞懂才能理解的, 最好是单跟踪执行一下, 我这里就简单说一下吧!
hanoi(5, 'a', 'b', 'c');把5个从'a'移到'c'
这时n=5, noe='a', two='b', three='c'
因为n!=1, 执行else里的
hanoi( 4, 'a', 'c', 'b'); //把上面4个从a移到b
move( 'a', 'c'); //把第5个从a移到c
hanoi( 4, 'b', 'a', 'c'); //再把那4个从b移到c
上面的很好明白的, 再分析hanoi( 4, 'a', 'c', 'b'); //把上面4个从a移到b,也是执行else
hanoi( 3, 'a', 'b', 'c'); //把上面3个从a移到c
move( 'a', 'b'); //把第4个从a移到b
hanoi( 4, 'c', 'a', 'b'); //再把那3个从c移到b

一直到n=1才结束
471537173
2007-05-12 · TA获得超过224个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:176万
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式