栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python动态规划之Fibobacci数列

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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) 


非递归
非递归实现很简单,效率更高

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290802.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号