汉诺塔作为一款益智玩具该怎么玩呢?
我们可以通过递归来实现他
汉诺塔的规则是:
1.要把第一根柱子上的所有饼都移动到第三根柱子上。
2.一次只可以移动一块饼。
3.大饼永远不能放在小饼上面。
饼数较少时还好解决,当饼数越来越多时,需要的步骤也是指数级地增加。所以这时,我们可以通过递归的手段来实现。我们假设有n块饼,序号越大说明这块饼越大。
当饼数为n时,第一步我们需要把n上面n-1块饼借助第三根柱子移动到第二根柱子上
第二步就可以直接把n移动到第三根柱子上了。
第三步再把n-1块饼借助第一根柱子移动到第三根柱子上。
基线条件:
当 n = 1时,我们可以直接把n从第一根柱子移动到第三根柱子。
def hannuota(n:int,A:str,B:str,C:str):
if n == 1:
print("将%d号饼从%c移到%c"%(n,A,C))
else:
hannuota(n-1,A,C,B)#把n-1块饼从A借助C移动到B
print("将%d号饼从%c移动到%c"%(n,A,C))
hannuota(n-1,B,A,C)#把n-1块饼从B借助A移动到C
n = int(input("请输入汉诺塔饼的数量:"))
hannuota(n,'A','B','C')