【C语言】用递归解决汉诺塔问题太容易不过了

作者: 沙猪教写程序分类: 计算机技术 发布时间: 2023-12-07 15:48:42 浏览:20479 次

【C语言】用递归解决汉诺塔问题太容易不过了

黑脸的张飞叫渣渣:
这个世界至少有70%的人一辈子都理解不了递归

【回复】说我吗?能有循环绝不递归
【回复】哈哈没关系 努力努力即可[脱单doge]
【回复】有百分之七十的人都不学C语言[doge]
鸢尾之落:
汉诺塔问题是我之前就一知半解的,今天又开始重新思考这个问题,我认为使大家疑惑最多的是汉诺塔问题的参数,我们不妨将它们分别定义为start(起始柱),auxiliary(辅助柱),goal(目标柱),首先我们需要将n-1个柱子从start移动到auxiliary,再将剩下的那个柱子移动到goal,我们可以使用递归对步骤一和步骤二进行细分,首先是步骤一将n-1个柱子移动到auxiliary上,此时我们可以将auxiliary看作是步骤一的goal(即目标柱),由于我们的移动始终遵守小盘在上的原则,故这种操作是可以的,以此类推,在步骤三我们可以将auxiliary看作是goal,以此完成递归

【回复】回复 @样纸永的小号 :嗯....,你可以去搜一下,我记得有这种视频的,汉诺塔很难的!!!,加油鸭[打call]
【回复】看了这么多视频都不怎么明白@,最后看到你的评论让我恍然大悟了[脱单doge]
【回复】最大的疑惑就是这个move函数如何做到能将起始杆上的圆盘移动到目标杆的,这个“借助”的过程到底是怎样一个过程。。。[脸红]
灰原小小小小哀:
汉诺塔这玩意初学确实烧脑,但是学编程就是有时候灵光一现就想明白了,我总结的就是把上面n-1个盘子看做一个整体,递归的第一个参数是需要移动的盘子,也就是这n-1个,后面三个参数遵循起始轴,中转轴和目标轴的规律,这n-1个盘子在哪,那么那根轴就是起始轴,要把它们移动到哪,那么那根轴就是目标轴,剩下的一个轴就是中转轴

光速的超人:
继续发数据结构的视频,我会看的谢谢[星星眼]

【回复】都没人给我点赞都快凉了[酸了]
【回复】回复 @沙猪教写程序 :我给你点赞[doge]
【回复】回复 @沙猪教写程序 :加油
灰割:
想我曾经,意气风发,想要踏足编程界,然后就一头撞死在汉诺塔上了[笑哭]不看视频,把问题琢磨多少遍,代码琢磨多少遍,推演多少遍,都搞不明白这玩意到底怎么弄的

【回复】我的数理逻辑简直是灾难,数学从小学坏到高中,现在跟朋友aa都口算不出来[笑哭]看来最多写程序搞点小创意了
调查兵团-东大分部:
太喜欢啦,爱死你UP[脱单doge],讲得太好啦,看完你的视频,我一天的心情都超级好。

【回复】哈哈哈哈能给你带来快乐我也很快乐[喜欢]
在这挺顿:
玩单片机的就最好还是少用了,特别是资源少的[doge]

【回复】回复 @顾灬似 : 容易堆栈溢出
夜景如乡:
将全部盘子移到B柱,这个方法好像就不管用了……不知道哪里错了

【回复】将n-1个盘先移到C柱,再将最下面的盘子移到B柱,最后将n-1个盘移到B柱。
【回复】先通过c把n-1个移动到b再把第n个移动到c最后再把n-1个通过a柱子移动到c终止条件是当a柱子上剩余一个的时候移动到c
【回复】回复 @沙猪教写程序 :你真的试过了吗?我改了以后还是没用[捂脸]
沙猪教写程序:
听懂的给个三连让我康康是谁还不会[doge][doge]

Whiter-Paper:
我今天刚刚想学这个汉罗塔你就发视频了[星星眼]太酷了

【回复】哈哈哈给个三连 为你私人定制[doge][星星眼][吃瓜]
张再越:
用人脑去模拟这个递归 头疼啊[笑哭][笑哭]

奇迹秀山鱼_:
按实物写程序看得懂,但是这个程序是怎么执行的啊。n-1的移动是怎么打印出来的,况且hanoi(n-1)一直递归又没有继承,那不就是hanoi(1)吗[辣眼睛]

___一念初见___:
你这个视频字幕跟进度条放一块……[笑哭]难绷

【回复】回复 @沙猪教写程序 :哦哦好吧 谢谢刚开始没找到[doge]讲的挺好的[打call]
【回复】他这个跟屏幕大小有关[笑哭]你可以把进度条关掉的
【回复】回复 @____一念初见____ :谢谢支持 三连加关注 考试有天助[打call]

计算机 有趣 C语言 编程 递归 C/C++ 汉诺塔 必剪创作 2023我爱编程 1024·2023活动征稿

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!