中易网

c语言函数递归调用问题(请高手帮忙详细解释)

答案:1  悬赏:70  
解决时间 2021-10-06 11:54
c语言函数递归调用问题(请高手帮忙详细解释)
最佳答案
确实,初学C的时候,汉诺塔的递归看起来确实是比较神奇的程序。
其中主要就在hanoi 这个递归函数,传的参数里面有一个n 代表是几层递归。
如果n=1 代表只有一个,move(one,three); 就是把第一个移到第三个就行了。否则
第一个柱子上有n个(n>1) 要移到第三个。需要把上面的n-1个移到第二个,最下面的一个移到第三个,再把第二个柱子上的n-1个移到第三个。 要这三个步骤。

其中,第一个,和第三个步骤,和本身其实是一样的。
就是把n-1个移到第二个,注意hanoi的参数

two 即第二个参数,这是表示用来借助的

就假设n=2 吧 hanoi(2,'A','B','C'); 变成了
hanoi(1,A,C,B); //这个代表A座上有一块,需要借助C座,移到B座
A--->C
hanoi(1,B,A,C); //这个代表B座上有一块,需要借助A座,移到C座
最后会输出
A-->B
A-->C
B-->C

假设n=3 hanoi(3,'A','B','C');
hanoi(2,A,C,B); //这个代表A座上有两块,需要借助C座,移到B座
A--->C
hanoi(2,B,A,C); //这个代表B座上有两块,需要借助A座,移到C座

A座上有两块,需要借助C座,移到B座 会输出
A-->C
A-->B
C-->B

B座上有两块,需要借助A座,移到C座 会输出
B-->A
B-->C
A-->C
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
公积金是不是可以封存?有什么步骤
怎么开设一间银行 比如工商银行 有没有加盟?
怀孕早期吃什么最好
陕西宝鸡公租房申请需要哪些条件?有哪几点?
成都沙湾摩尔百盛有百家好专卖店么
广州周门设计港牌坊在哪里?
羽翮飛肉的意思是什么?羽翮飛肉的释义是什么
楷模餐桌d01餐桌价格如何
重庆时尚频道生活麻辣烫的片尾曲是啥子
顺丰快递从广州市发货到河源市连平县可以当天
北京朝阳区体育名牌店?
鹤壁淇县那修数码相机
西安哪有卖双排的旱冰鞋?
儿童舌根痛 舌苔发白 吃东西会痛怎么回事
请问尿酸痛风,吃饭后多久能正常步行呢?
推荐资讯
问问安置房有没有房产证?有哪位知道?
武汉哪里有专门卖茶艺桌的?
袖珍椰子的习性?
2015钢筋线材价格一般多少
首次买房税费是几多?注意事项是什么?
新奥尔良烤鸡腌料是如何制作的呀?
求一个三房两厅装修材料清单?
2012甘肃白银靖远中考成绩查询时间是何时
dvd光驱如何刻录
电脑主机音箱插孔怎么插?
河南商丘哪里能买到日本电影《关于莉莉周的一
生姜米醋能治斑秃吗
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?