赞
踩
我们最终解决的问题就是将a柱子原来由大到小从下到上排好序的圆盘通过b柱子移动到c柱子上即可
如图:
1先将n-1个盘子从a柱子借助c柱子移动到b柱子,如图:
2.将a柱子上剩下的第n个盘子移动到c柱子上
3.将b柱子上的n-1个盘子借助a柱子上移动到c柱子上,最后完成移动!如图:
# 汉诺塔
def hannio(n,a,b,c):
if n==1:
print("move dish %d from %c to %c" % (n, a, c))
else:
hannio(n-1,a,c,b)
print("move dish %d from %c to %c" % (n, a, c))
hannio(n-1,b,a,c)
print(hannio(4,'a','b','c'))
递归是什么?
原理:函数自己调用自己的过程,怎么理解呢?也就是函数可以调用函数里面的所有的函数包括本身。
举例:第一个是阶乘(factorial),第二个是进制转换,看代码:
#阶乘和
def factorial(n):
if n==1:
return 1
else:
return n*factorial(n-1)
n=int(input())#输入一个整数
result=factorial(n)
print("数字%d的阶乘和为:%d"%(n,result))
#进制转换
def toStr2(n,base):
convertString='0123456789ABCDEF'
if n == 0:
return ''
else:
return toStr2(n // base, base) + convertString[n % base]
n,m=map(int,input().split())
result=int(toStr2(n,m))
print("%d转化为%d进制后为:%d"%(n,m,result))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。