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

参考代码的意义

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

能给我详细解释一下吗

正在回答

2 回答

def move(n, a, b, c):   #   该函数的目的是将N个a柱子上的圆盘移动到c上。也就是第二个参数的上的圆盘放到第四个参数上。

    if n == 1:              #     如何只有一个   直接将a上的圆盘移动到c上。

        print a,'-->',c

        return          #目标完成,结束。

    move(n-1,a,c,b)      #如何a上不只有一个,那么先将a上出底盘外的n-1个圆盘移动到b上,注意函数的目的,是将第二个参数上的圆盘移动到第四个参数上,故而需将第b与c对调,表示将n-1的圆盘先移动到b上。

    print a,'-->',c           # 将a的底盘放到C

    move(n-1,b,a,c)       #最后再将b上的n-1个圆盘放到c上。


move(4, 'A', 'B', 'C')


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

慕姐4424294

大神正解!!我懂了
2018-07-18 回复 有任何疑惑可以回复我~
#2

小萌新qwq

看了一圈问答 谢谢大佬 懂了
2018-07-19 回复 有任何疑惑可以回复我~

这个你要一层一层按顺序看下来 ,用n = 3 想看起来, move(n-1,a,c,b) 第一次进出这里面,n 变成2 b -> c, c ->b. 注意字母的赋值变化。在里面重新运行一次move函数,还会有move(n-1,a,c,b),n变为1,b、c回到原来的值。注意这里可以说是函数里的函数里的函数,第三层了。这一层return,结束了,是回到第二次 print a,'-->',c     move(n-1,b,a,c). 这个时候的n是2,进入一次move(n-1,b,a,c). 

逻辑上并不能,只是感觉我们人脑进行这样的思考,很容易混淆吧不熟练的话。可以拿一张大的纸,一层层慢慢下下来,会比较清晰吧。


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

举报

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

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

进入课程

参考代码的意义

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