汉诺塔递归问题求助
汉诺塔问题 我想加入一个显示最少移动次数的功能 代码应该怎么实现呢试了很多次都失败了 次数总是2def hn(n,x,y,z):
if n==1:
print(x,'-->',z)
else:
hn(n-1,x,z,y)
print(x,'-->',z)
hn(n-1,y,x,z)
n=int(input('请输入汉诺塔的层数:'))
hn(n,'X','Y','Z')
可以创建一个全局变量,然后在hn函数中if和else中调用它,每次执行的时候自加,最后打印这个全局变量,如:
num = 0
def hanoi(n,x,y,z):
global num
if n == 1:
print(x,' - - >',z)
num = num + 1
else:
hanoi(n-1,x,z,y) #将前n-1个盘子从x移动到y上
print(x," - - >",z) #将最底下的最后一个盘子从x移动到z上
hanoi(n-1,y,x,z) #将y行的n-1个盘子移动到z上
num = num + 1
number = int(input('请输入汉诺塔的层数:'))
hanoi(number,'X','Y','Z')
print("一共%d个步骤"% num) 972619178 发表于 2020-4-12 03:43
可以创建一个全局变量,然后在hn函数中if和else中调用它,每次执行的时候自加,最后打印这个全局变量,如: ...
十分感谢您的帮助 我没加第一步 num=0所以一直报错 yangge9 发表于 2020-4-12 04:01
十分感谢您的帮助 我没加第一步 num=0所以一直报错
要先声明一个全局变量才可以在函数中调用的哦
页:
[1]