之前学python的时候一直没搞懂这个问题,汉诺塔在各种语言的递归里很多都会讲到....
汉诺塔
有三根柱子,分别是A、B、C,n个盘子在A柱上,需要将盘子由A柱搬到C柱上,并规定小盘子不能放大盘子。
过程
假设有2个盘子,需要的步骤是将小盘子移到B柱,将大盘子移到C柱,再将小盘子从B柱移到C柱,也就是
A->B
A->C
B->C
假设有3个盘子,需要的步骤是先把A柱2个盘子移到B柱(和2个盘子一样,A柱起始柱,B柱是目标柱),再将最大的盘子移到C柱,再将B柱两个盘子移到C柱(和2个盘子一样,但是B柱起始柱,C柱是目标柱)
def hannuota(n,x,y,z):
if n==1:
print(x+"->"+z)
else:
hannuota(n-1,x,z,y)
print(x+"->"+z)
hannuota(n-1,y,x,z)
本文作者:风雪,转载时请注明本文出处:https://www.fxnetw.com/46.html
oner
2019-04-18 Android 9 / Chrome 回复
Oner前来拜访,欢迎互访,朋友