鱼C论坛

 找回密码
 立即注册
查看: 1530|回复: 4

汉诺塔问题

[复制链接]
发表于 2023-11-24 09:25:43 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 wk012233 于 2023-11-24 09:27 编辑
def hanoi(n, x, y, z):#定义函数hanoi
    if n > 0:
        # 将 n-1 个盘子从源柱子移动到辅助柱子
        hanoi(n-1, x, z, y)
        
        # 将第 n 个盘子从源柱子移动到目标柱子
        print(f"将盘子 {n} 从 {x} 移动到 {y}")
        
        # 将 n-1 个盘子从辅助柱子移动到目标柱子
        hanoi(n-1, z, y, x)

n = int(input('输入层数:'))  # 盘子的数量
hanoi(n, 'A', 'C', 'B')  # 将盘子从柱子 A 移动到柱子 C,辅助柱子为柱子 B


输入3时,结果打印出来是:
将盘子 1 从 A 移动到 C
将盘子 2 从 A 移动到 B
将盘子 1 从 C 移动到 B
将盘子 3 从 A 移动到 C
将盘子 1 从 B 移动到 A
将盘子 2 从 B 移动到 C
将盘子 1 从 A 移动到 C


现在我想弄明白第四步骤的3是怎么出来的,最好有大神能把整个的程序带参运行步骤给我梳理一遍
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-24 09:26:25 | 显示全部楼层
将盘子 1 从 A 移动到 C
将盘子 2 从 A 移动到 B
将盘子 1 从 C 移动到 B
将盘子 3 从 A 移动到 C
将盘子 1 从 B 移动到 A
将盘子 2 从 B 移动到 C
将盘子 1 从 A 移动到 C

这个结果是正确的,它展示了将 n 个盘子从 A 移动到 C 的步骤。在每一步中,我们都会移动一个盘子到目标柱子,并且保证辅助柱子始终为空或满足递归调用的条件,即保证盘子的顺序不会出错。

如果你想以列表的形式得到每一步的结果,可以稍作修改代码如下:

def hanoi(n, x, y, z, result):
    if n > 0:
        hanoi(n-1, x, z, y, result)
        result.append((n, x, y))
        hanoi(n-1, z, y, x, result)
        
n = int(input('输入层数:'))
result = []
hanoi(n, 'A', 'C', 'B', result)
for step in result:
    print(f"将盘子 {step[0]} 从 {step[1]} 移动到 {step[2]}")

这样,结果就会以列表的形式存储在 result 变量中,然后依次打印出来。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-24 09:27:07 | 显示全部楼层
如果您运行上述代码并输入层数,它将打印出汉诺塔问题的解决步骤。结果会根据您输入的盘子数量而有所不同。

请注意,您在问题中没有提供具体的结果。如果您希望我提供特定层数的结果,请告诉我层数,我将为您提供相应的结果。

回复来自于CHAT-GPT。回复仅供参考,如有人工回答,最佳答案请优先选择人工
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-24 09:41:28 | 显示全部楼层
不要去深究递归程序里面的细节,你只需要知道编写该程序的大体思路。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-11-24 10:26:10 | 显示全部楼层
本帖最后由 wk012233 于 2023-11-24 10:28 编辑

画了个思维导图,好像能弄明白了
{4D883C1E-2D0B-476f-8EB5-0B2619A364A6}.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 23:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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