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

看不懂代码里的abc怎么换的同学可参考链接

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')


正在回答

4 回答

我按自己的理解:

简单讲解一下3和2层,然后自己验证4层的移动,验证move(4,a,b,c)的第一步骤move(3,a,c,b)下面的7个步骤就可以。

2层:


move (2,a,b,c)

   #都会先判断是否为1

   #然后不是,就会进行接下来三步: 1:move(n-1, a, c, b),2: print a, '-->', c,3:move(n-1, b, a, c)

   1:move(1,a,c,b)#分析此处的内部运作

       #因为是1,所以不走三步,直接执行if下print a-c,但是这里可能就导致不好理解了

       #其实这里是指print 1位到3位,可见在 move(1,a,c,b)中,1位是a,3位是b

       #打印结果是A--》B

   2:print a-c #其实也是执行print本层move的 1位到3位  

        #在本层的move (2,a,b,c)中,1位是a,3位是c

       #打印结果是A--》C

  3:move(1,b,a,c)

       #因为是1,所以执行print a-c---》print 1位到3位,1位是b,3位是c

       #打印结果是B--》C

       #后面不在重复打印的是本层move的1位到3位

       AB  AC   BC

3层:

 move(3,a,b,c)

    #判断不是1

    #进入接下来三步

    1:move(2,a,c,b)

        #这里的abc位置刚才没讲,因为刚才和程序的变化一样

        #这里因为有多层,讲解一下:

        #1步骤:move(n-1, a, c, b)程序的意思是,上层的move里的第二位和第三位互换

        #3步骤:move(n-1, b, a, c)程序的意思是,上层move里的第一位和第二位互换

        #这里2不是1,所以要进行三步

        ①:move(1,a,b,c)#上层move的2,3位互换

                    #打印结果是A--》C

        ②:打印结果是A--》B

        ③:move(1,c,a,b)#上层move的1,2位互换

                    #打印结果是C--》B

     2:打印结果是A--》C#提示一下,本层是:move(3,a,b,c)

     3:move(2,b,a,c)#上层move的1,2位互换

         ①:move(1,b,c,a)#上层move的2,3位互换

                     #打印结果是B--》A

         ②:打印结果是B--》C

         ③:move(1,a,b,c)#上层move的1,2位互换

                     #打印结果是A--》C  

AC   AB   CB   AC   BA   BC   AC 


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

慕移动7552751

看不懂,呜呜
2019-05-13 回复 有任何疑惑可以回复我~

你好这个网页搜不到~

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

weixin_慕虎5413914 提问者

不好意思啊,我现在也进不去了,不知道怎么回事
2019-04-15 回复 有任何疑惑可以回复我~

搜不到呀

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

weixin_慕虎5413914 提问者

不好意思啊,我现在也进不去了,不知道怎么回事
2019-04-15 回复 有任何疑惑可以回复我~

本来看不懂代码里的abc是怎么换来换去的,参考了大神的文章,很容易理解,共享给大家http://fourcolor.oursnail.cn/2019/02/26/algorithms-basic/%E5%9F%BA%E7%A1%80%E7%AE%97%E6%B3%952-%E6%B1%89%E8%AF%BA%E5%A1%94%E9%97%AE%E9%A2%98/

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

举报

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

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

进入课程

看不懂代码里的abc怎么换的同学可参考链接

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