递归
相比较而言迭代运行速度快递归简单
# 斐波那契数列——递归版
def fab(n):
if n == 1 or n == 2:
return 1
else:
return fab(n-1)+fab(n-2)
print(fab(35))
>>> 9227465
# 斐波那契数列——迭代版
def fab(n):
a1 =0
a = 0
for i in range(n):
a2 = a1
a1 = a
if i == 0:
a = 1
elif i == 1:
a = 1
else:
a = a2 + a1
return a
print(fab(5))
递归解决汉诺塔
def fun(n,x,y,z):
print(x,y,z)
if n == 1:
print(x,' -> ',z)
else:
fun(n-1,x,z,y)
print(x,' -> ',z)
fun(n-1,y,x,z)
n=2 #层数
fun(n,'x','y','z')