鱼C论坛

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

[已解决]汉诺塔

[复制链接]
发表于 2020-12-16 21:36:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
画红色横向的地方:当n=3时,第一次执行这条语句时,x与z的值是什么?
我的困惑是上面有一个递归语句,是这个递归语句执行完再执行画红色的语句吗?x,z从hanoi(2,'X',‘Z’,‘Y’)还是hanoi(1,'X',‘Y’,‘Z’)中得到
最佳答案
2020-12-17 01:45:04
其实问这个问题  实际上是没有把汉诺塔的原理吃透 说白了就是受了自己的思路限制
递归说白了是把一个很复杂的东西拆分成同样的步骤一直执行  由变量来控制结束
现在你还没把汉诺塔的移动拆分成简单的逻辑 也就没法理解这个程序了
我先给你看个网上的 至少小甲鱼是这么讲的
       实现这个算法可以简单分为三个步骤:
    (1)     把n-1个盘子由A 移到 B;
    (2)     把第n个盘子由 A移到 C;
    (3)     把n-1个盘子由B 移到 C;
这是网上的算法 我先说一句 完全狗屁不通
比如我们说3个盘子 它的第一步就是把3-1=2个盘子移动到B   你觉得对吗?你首先移动的是最小的吧 然后中间那个盘子就不可能移动到B 肯定要移动到C去才行 这才对
所以说基础逻辑就是错的    又怎么能把程序写出来呢? 我给你理下逻辑
比如3个盘子 第一步是第一个盘子到B 第二个盘子到C  第一个盘子到C   第三个盘子到B  第一个盘子到A 第二个盘子到B 第一个盘子到B
然后你把第一个盘子写成3-2  第二个盘子写成3-1
再推下4个盘子 5个盘子 就会了
问题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-17 01:45:04 | 显示全部楼层    本楼为最佳答案   
其实问这个问题  实际上是没有把汉诺塔的原理吃透 说白了就是受了自己的思路限制
递归说白了是把一个很复杂的东西拆分成同样的步骤一直执行  由变量来控制结束
现在你还没把汉诺塔的移动拆分成简单的逻辑 也就没法理解这个程序了
我先给你看个网上的 至少小甲鱼是这么讲的
       实现这个算法可以简单分为三个步骤:
    (1)     把n-1个盘子由A 移到 B;
    (2)     把第n个盘子由 A移到 C;
    (3)     把n-1个盘子由B 移到 C;
这是网上的算法 我先说一句 完全狗屁不通
比如我们说3个盘子 它的第一步就是把3-1=2个盘子移动到B   你觉得对吗?你首先移动的是最小的吧 然后中间那个盘子就不可能移动到B 肯定要移动到C去才行 这才对
所以说基础逻辑就是错的    又怎么能把程序写出来呢? 我给你理下逻辑
比如3个盘子 第一步是第一个盘子到B 第二个盘子到C  第一个盘子到C   第三个盘子到B  第一个盘子到A 第二个盘子到B 第一个盘子到B
然后你把第一个盘子写成3-2  第二个盘子写成3-1
再推下4个盘子 5个盘子 就会了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 02:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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