【问题描述】
汉诺塔问题是法国数学家编写的一个印度古老传说,简单来说就是:寺院里有三根柱子,第一根摞着64个盘子,从上到下盘子越来越大。方丈要求小和尚把64个盘子全部移动到第三根柱子上,在移动的时候,始终只能是小盘子压着大盘子,且每次只能移动一个。假如移动一个盘子要一秒钟,按照数学规律,要花5849亿年之久,比地球的寿命都长n倍。
假设现在有三根柱子(A,B,C),A柱上有N个盘子,要求按照汉诺塔原则将A柱上的盘子借助B柱,全部移动到C柱上,请设计程序模拟移动过程,并计算步数。
【输入形式】
一个正整数
【输出形式】
操作步骤
【样例输入】
4
【样例输出】
A -> B
A -> C
B -> C
A -> B
C -> A
C -> B
A -> B
A -> C
B -> C
B -> A
C -> A
B -> C
A -> B
A -> C
B -> C
答案开始为:def hanoi(A,B,C,n)#定义一个函数hanoi使用递归完成计算
我的答案是:
def hanoi(A,B,C,n)#定义一个函数hanoi使用递归完成计算
if n == 1:
move(A, C)
else:
hanoi(n -1, A, C, B)
move(A, C)
求教!!!
hanoi(n -1, B, A, C)
望采纳
完成的代码如下:
def hanoi(A,B,C,n):
if n == 1:
print(A,'->',C)
else:
hanoi(A,C,B,n-1)
print(A,'->',C)
hanoi(B,A,C,n-1)