为了账号安全,请及时绑定邮箱和手机立即绑定

为什么会这样呢

def move(n, a, b, c):
    if n ==1:
        print (a, '-->', c)
        return
    move(n-1, a, c, b)
    print (a, '-->', c)
    move(n-1, b, a, c)
move(4, 'A', 'B', 'C')

输出结果:

A --> B
A --> C
B --> C
A --> B
C --> A
C --> B
A --> B
A --> C
B --> C
B --> A
C --> A
B --> C
A --> B
A --> C
B --> C

为什么 A -->C ,B -->C 各输出四次,A -->C 输出三次,C -->A 输出两次,C --> B, B -->A各输出一次呢,求解

正在回答

3 回答

借用其他大神的递归函数图,并把其中的小瑕疵修改掉了。整个递归函数过程很清晰,再有不明白的可以继续提问。

http://img1.sycdn.imooc.com//5e4e315000011df512050764.jpg

0 回复 有任何疑惑可以回复我~

你可以看一下我的笔记,我把过程都列出来了可能会好理解一些汉诺塔的问题,但是递归函数我还是有点模糊

0 回复 有任何疑惑可以回复我~

把n个从a依靠b移动到c,你在a通过c移动到b上n-1个之后,a上剩了一个,你要先把a上这个移动到c,就是print(a+'-->', c),这时才是解决了移动a最底下那个到c的过程,然后这时n-1个在b上,自然就是b上的n-1个通过a移动到c了,move(n-1, b, a, c)

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758625    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

为什么会这样呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信