鱼C论坛

 找回密码
 立即注册
查看: 1590|回复: 12

[已解决]汉诺塔else两个函数运行顺序

[复制链接]
发表于 2024-3-28 07:22:00 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
汉诺塔else两个函数运行顺序是怎样的,如何一次调用的
最佳答案
2024-3-30 09:01:53
看看这个运行步骤图 (, 下载次数: 0)

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-3-28 21:29:38 | 显示全部楼层
FishC 发表于 2024-3-28 07:22
在使用递归解决汉诺塔问题时,通常会定义两个函数: move(n, a, b, c) 和 hanoi(n, a, b, c)。

其中,mo ...

有案例讲解一下吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-28 22:26:07 | 显示全部楼层
FishC 发表于 2024-3-28 21:30
好的,我们来给出一个具体的案例来说明汉诺塔问题的解决过程。假设有3个盘子,分别从A柱子移动到C柱子 ...

def hanoi(n, a, b, c):
    if n == 1:
        move(1, a, c)
    else:
        hanoi(n-1, a, c, b)
        move(n, a, c)
        hanoi(n-1, b, a, c)

hanoi(2, 'A', 'B', 'C')
这里几个位置是怎么交替的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-28 23:03:17 From FishC Mobile | 显示全部楼层
FishC 发表于 2024-3-28 22:26
让我们根据给定的参数和函数调用,来详细解释一下hanoi函数的运行顺序:1. 首先,我们使用 hanoi(2, 'A ...

def hanoi(n, a, b, c):
    if n == 1:
        move(1, a, c)
    else:
        hanoi(n-1, a, c, b)
        move(n, a, c)
        hanoi(n-1, b, a, c)

最后一行是不是错了,应该是hanoi(n-1,c,a,b)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-29 07:21:16 From FishC Mobile | 显示全部楼层
FishC 发表于 2024-3-28 23:03
你是对的,最后一行是错了。正确的调用应该是 `hanoi(n-1, b, a, c)`,而不是 `hanoi(n-1, c, a, b)`。 ...

  - "将盘子 1 从柱子 A 移动到柱子 C"    - "将盘子 2 从柱子 A 移动到柱子 C"    - "将盘子 1 从柱子 B 移动到柱子 C"总结来说,函数的调用顺序是通过递归实现的上述描述与实际执行不太一样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-29 16:31:55 From FishC Mobile | 显示全部楼层
FishC 发表于 2024-3-29 07:21
非常抱歉,我之前的描述可能引起了混淆,给你带来了困惑。实际上,递归函数的调用顺序与你所描述的确实 ...

能详细讲解一下位置传参数一会abc一会cab是怎么变换的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-5 02:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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