pc建站网站,酒店家具网站源码,襄阳做网站排行榜,wordpress网站# 初始化步骤计数器 i 1
# 定义移动盘子的函数 def move(n, mfrom, mto): global i # 使用全局变量i来跟踪步骤 print(第%d步:将%d号盘子从%s-%s % (i, n, mfrom, mto)) # 打印移动步骤 i 1 # 步骤计数器加1 #第一种方法
# 定义汉诺塔问题的递归…# 初始化步骤计数器 i 1
# 定义移动盘子的函数 def move(n, mfrom, mto): global i # 使用全局变量i来跟踪步骤 print(第%d步:将%d号盘子从%s-%s % (i, n, mfrom, mto)) # 打印移动步骤 i 1 # 步骤计数器加1 #第一种方法
# 定义汉诺塔问题的递归函数 def honol(n, A, B, C): if n 1: # 如果只有一个盘子直接移动到目标柱 move(1, A, C) else: honol(n-1, A, C, B) # 递归地将上面的n-1个盘子从A移动到B move(n, A, C) # 将第n个盘子从A移动到C honol(n-1, B, A, C) # 递归地将B上的n-1个盘子移动到C
try: n int(input(please input a number:)) # 请求用户输入盘子的数量 print(移动步骤如下:) # 提示用户即将显示移动步骤 honol(n, A, B, C) # 调用汉诺塔函数开始移动盘子 except ValueError: # 如果输入不是整数则捕获异常 print(please input a integer n(n0)!) # 提示用户输入一个正整数
第二种方法
def hanoi(n,x,y,z):if n 1:print(x,--,z)else:hanoi(n-1,x,z,y)print(x,--,y)hanoi(n-1,y,x,z)
while True:nint(input(请输入汉诺塔的层数:))hanoi(n,x,y,z)
输出结果
第一种方法 第二种