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

还有点小问题,求助

def Hanoi(n,a,b,c):

    if n == 1:

        print(a,'-->',c)

    else:

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

        Hanoi(1,a,b,c)

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

n = int(input('请输入汉诺塔层数:'))

Hanoi(n,'a','b','c')

结果:

请输入汉诺塔层数:3

a --> c

a --> b

c --> b

a --> c

b --> a

b --> c

a --> c

如果是三层的话:那么是a-->c , a -- b,之后的那个c --> b是怎么打出来的?


正在回答

3 回答

def Hanoi(3,a,b,c):
    if n == 1:
        print(a,'-->',c)
    else:
        Hanoi(2,a,c,b)               #1-1  注意实参顺序,b和c位置颠倒
        Hanoi(1,a,b,c)               #1-2
        Hanoi(2,b,a,c)               #1-3   注意实参顺序,a和b位置颠倒
n = int(input('请输入汉诺塔层数:'))
Hanoi(n,'a','b','c')

下面进入1-1的函数:

def Hanoi(2,a,b,c):       #1-1实参传入的是Hanoi(2,a,c,b),注意b和c是反的,即实参b=形参c,实参c=形参b
    if n == 1:
        print(a,'-->',c)            #这句其实的意思是“形参2-->形参4”
    else:
        Hanoi(1,a,c,b)               #1-1-1
        Hanoi(1,a,b,c)                 #1-1-2
        Hanoi(1,b,a,c)               #1-1-3
n = int(input('请输入汉诺塔层数:'))
Hanoi(n,'a','b','c')

首先要明白形参和实参的概念,形参是在函数内部用的,实参是调用时赋值给形参的。

所以在1-1的函数中b和c是反的哦.然后我们把3代入n中:

1-1-1的函数运行结果是  a-->c  (b和c相反,“形参2 a-->形参4 c”),之后返回1-1中继续下一条语句1-1-2

1-1-2的函数运行结果是  a-->b(b和c相反,“形参2 a-->形参4 b”) , 之后返回1-1中继续下一条语句1-1-3

1-1-3的函数运行结果是  c-->b (b和c相反,“形参2 c-->形参4 b”), 之后返回最外面的函数继续下一条语句1-2,以此类推


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

DawnCat13

运行的顺序是: 1-1 1-1-1 1-1-2 1-1-3 1-2 1-3 1-3-1 1-3-2 1-3-3
2016-04-13 回复 有任何疑惑可以回复我~
#2

Capricorn_x 提问者

解释的太清楚啦,多谢多谢!
2016-04-13 回复 有任何疑惑可以回复我~

当n=3时,执行Hanoi(3,'a','b','c')

n!=1,执行else   Hanoi(2,'a','c','b')

此时需要把Hanoi(2,'a','c','b')执行完才会执行初始程序中的else的第二行 Hanoi(1,a,b,c)


执行Hanoi(2,'a','c','b')的过程为

        Hanoi(2-1,'a','b','c')

        Hanoi(1,'a','c','b')

        Hanoi(2-1,'c','a','b')

得到打印的前三个结果


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

Capricorn_x 提问者

嗯嗯,懂啦,是参数问题,多谢多谢
2016-04-13 回复 有任何疑惑可以回复我~

大兄弟,你有行代码错了吧

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

Capricorn_x 提问者

应该没错吧?我验证了几次
2016-04-13 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

还有点小问题,求助

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