python动态规划之Fibobacci数列

1简单的递归:当前值f(n)=f(n-1)+f(n-2)

Class Solution():
	def Fibonacci(self,n):
		if(n<=2):
			return n
		return self.Fibonacci(n-1) + self.Fibonacci(n-2)

每一层会发生两次递归。很多计算是重复的,效率低下,n值大就会导致超时

2尾递归:尾部调用递归函数,且每一层只产生一次递归
从n计数到1,n每次减1,f(n-2) = f(n-1) + f(n) = b + a

class Solution:
    def climbStairs(self, n: int) -> int:
        if (n<=2):
            return n
        return self.Fibonacci(n,a=1,b=1)
    def Fibonacci(self,n,a,b):
        if n == 1:
            return b #最后一层,返回b,b为当前层的值
        return self.Fibonacci(n-1,a=b,b=a+b) #f(n-2) = f(n-1) + f(n) 

在这里插入图片描述
非递归
非递归实现很简单,效率更高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值