递归
阶乘算法:
def jc(a):
if a==1:
return 1
else:
return a*jc(a-1)
斐波那契数列
1 1 2 3 5 8 13 21 34 55 89 144
|1, 当n=1
Fn|1, 当n=2
|F(n-1)+F(n-2) 当n>2
两种算法:
一:迭代
#encoding:utf-8
def feb(n):
n1=1
n2=1
n3=1
if n<1:
print('输入有误')
return -1
while n>2:
n3=n2+n1
n1=n2
n2=n3
n-=1
return n3
result=feb(20)
if result!=-1:
print(result)
递归:
#encoding:utf-8
def feb(n):
if n<1:
print('输入有误')
return -1
if n==1 or n==2:
return 1
else:
return feb(n-1)+feb(n-2)
print feb(20)
汉诺塔:
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)
hannuota(8,'X','Y','Z')