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

不明白啊?求解

def move(n, a, b, c):
    if n==1:
        print a,'-->',c
        return
    move(n-1,a,c,b)
    move(1,a,b,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

这个里面的C-->A   C --> B  是怎么实现出来的?

正在回答

2 回答

n=4,计算机的计算流程如下

move(3, a, c, b)#这时终点是b,起点为a,相当于将盘子从a移动到b
    move(2, a, b, c)#这时终点是c,起点为a,相当于将盘子从a移动到c
        move(1, a, c, b)    print a -> b
        move(1, a, b, c)    print a -> c
        move(1, b, a, c)    print b -> c

    move(1, a, c, b)        print a -> b

    move(2, c, a, b)#这时终点是b,起点为c,相当于将盘子从c移动到b
        move(1, c, b, a)    print c -> a
        move(1, c, a, b)    print c -> b
        move(1, a, c, b)    print a -> b

move(1, a, b, c)            print a -> c

move(3, b, a, c)#这时终点是c,起点为b,相当于将盘子从b移动到c
    move(2, b, c, a)#这时终点是a,起点为b,相当于将盘子从b移动到a
        move(1, b, a, c)    print b -> c
        move(1, b, c, a)    print b -> a
        move(1, c, b, a)    print c -> a

    move(1, b, a, c)        print b -> c

    move(2, a, b, c)#这时终点是c,起点为a,相当于将盘子从a移动到c
        move(1, a, c, b)    print a -> b
        move(1, a, b, c)    print a -> c
        move(1, b, a, c)    print b -> c

3 回复 有任何疑惑可以回复我~
#1

whoask

十分感谢!!!看了这么多答案,就你的最简单直接!
2017-02-13 回复 有任何疑惑可以回复我~

这篇文字,或许对你理解有帮助:http://www.45fan.com/a/question/56773.html

关键是理解递归的思路,直接阅读代码,的确是难以理解。

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

MH__Linux 提问者

思想我知道,我就是想知道代码是如何实现这个过程的
2016-10-27 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

不明白啊?求解

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