斐波那契数列
迭代法
def fab(n):
n1=1
n2=1
if n<1:
print("输入错误")
return -1
elif n==1 or n==2:
return 1
while (n-2)>0:
n3=n1+n2
n1=n2
n2=n3
n-=1
return n3
n=int(input('请输入经过多少个月:'))
sum=fab(n)
if sum!=-1:
print("总共有%d只兔子"%sum)
递归法
def fab(n):
if n<1:
print('输入错误')
return -1
elif n==1 or n==2:
return 1
else:
return fab(n-1)+fab(n-2)
m=int(input('请输入经过多少个月'))
sum=fab(m)
if sum!=-1:
print("总共有%d只兔子"%sum)
汉诺塔算法
思想:先将n-1个从x移到y上再把第n个从x移到z,这时y就是之前的x,x就是之前的y,再把n-2个从y移到x,把第n-1个从y移到z,逐渐下去…(最开始y是中间变量,移动后x又变为中间变量一直往复)