使用尾递归解决问题
爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
1阶台阶 1种方法
2阶台阶 2种方法
3阶台阶 3种
4阶台阶 5种
5阶台阶 8种
。。。
所以可以转换成斐波那契数列进行求解
def weiT(n,a=1,b=2,c=3):
if n==1:
return 1
elif n==2:
return 2
else:
if n==c:
return a+b
else:
return weiT(n,a=b,b=a+b,c=c+1)
斐波那契
def weiF(n,a=1,b=1,c=3):
if n < 3:
return 1
else:
if n == c:
return a+b
else:
return weiF(n,a=b,b=a+b,c=c+1)