零基础学习python之汉诺塔
def hanoi(n,x,y,z):# 如果只有一层,直接从x移动到z上
if n == 1: #返回条件
print(x ,"-->" ,z)
else:
hanoi(n-1,x,z,y) #需要将n-1层借助z从x移到y上
print(x ,"-->", z)
hanoi(n-1,y,x,z) #需要将n-1层借助x从y移到z上
n = int(input("请输入汉诺塔的层数:"))
hanoi(n,"X","Y","Z") #位置参数 注意形参和实参的转化
如何修改程序可以输出汉诺塔移动的次数?
本帖最后由 Twilight6 于 2020-5-22 11:43 编辑
加个count 计数
count = 0
def hanoi(n,x,y,z):
global count
# 如果只有一层,直接从x移动到z上
if n == 1: #返回条件
count += 1
print(x ,"-->" ,z)
else:
count += 1
hanoi(n-1,x,z,y) #需要将n-1层借助z从x移到y上
print(x ,"-->", z)
hanoi(n-1,y,x,z) #需要将n-1层借助x从y移到z上
n = int(input("请输入汉诺塔的层数:"))
hanoi(n,"X","Y","Z") #位置参数 注意形参和实参的转化
print('移动了:%d次'%count)
假设你输入的层数是 4那么 2**4 == 16 搬运次数为16-1= 15 cnt = 0
def hanoi(n,x,y,z):
global cnt
# 如果只有一层,直接从x移动到z上
if n == 1: #返回条件
print(x ,"-->" ,z)
cnt += 1
else:
hanoi(n-1,x,z,y) #需要将n-1层借助z从x移到y上
print(x ,"-->", z)
cnt += 1
hanoi(n-1,y,x,z) #需要将n-1层借助x从y移到z上
n = int(input("请输入汉诺塔的层数:"))
hanoi(n,"X","Y","Z") #位置参数 注意形参和实参的转化
print(cnt) move = 0
def hanoi(n,x,y,z):
global move
# 如果只有一层,直接从x移动到z上
if n == 1: #返回条件
move += 1
print(x ,"-->" ,z)
print(f"当前移动{move}次。")
else:
hanoi(n-1,x,z,y) #需要将n-1层借助z从x移到y上
move += 1
print(x ,"-->", z)
print(f"当前移动{move}次。")
hanoi(n-1,y,x,z) #需要将n-1层借助x从y移到z上
n = int(input("请输入汉诺塔的层数:"))
hanoi(n,"X","Y","Z") #位置参数 注意形参和实参的转化
{:5_110:}
页:
[1]