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

move(n, a, b, c):

为什么move(n, a, b, c):表示n从a->b

还有print a, '-->', c 为什么只在

move(n-1, a, c, b)  

    print a, '-->', c  #c=b

    move(n-1, b, a, c)

中间写一次?

print a, '-->', c 是相对于move(n, a, b, c):还是对于move(n-1, a, c, b)  说的

正在回答

2 回答

def move(n, a, b, c):
    if n==1:
#将第n个盘子从A上直接搬到C上
        print(a,'--->',c)
        return
#n-1个盘子从A经过C搬到B上
    move(n-1,a,c,b)
    print(a,'--->',c)
#将n-1个盘子从B经过A搬到C上
    move(n-1,b,a,c)
move(4, 'A', 'B', 'C')


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

我来把整段代码解释一下吧!希望能解决你的问题。

def move(n, a, b, c):    #定义一个函数(由下面代码的“a, '-->', c”可以看出,该函数的最终目的是要将a柱中的n个盘子移动到c柱中)。

    if n==1:
        print a,'-->',c       #只有一个盘子时,只需将其从a柱移动到c柱,一步到位。
        return
    move(n-1,a,c,b)       #这一行代码可以理解成是在继续定义函数,可以看出,与原始函数相比较,b与c的位置互换了,表示将a柱中的上面n-1个盘子移动到b柱中,b柱中就总共有n-1个盘子。那么,a柱中就只剩下最下面一个盘子了。
    print a,'-->',c           #然后一步是,将a柱中的盘子即剩下的最下面那个盘子移动到c柱中。
    move (n-1,b,a,c)      #接着定义函数,可以看出,与原始函数相比较,a与b的位置互换了,表示将b柱中的n-1个盘子(b柱中总共n-1个盘子)全部移动到c盘中。
move(4, 'A', 'B', 'C')     #输出利用‘B’这个中转站将‘A’中的4个元素按顺序替换到'C'中的结果。


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

举报

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

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

进入课程

move(n, a, b, c):

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