LeetCode in Python 509. Fibonacci Number (斐波那契数)

斐波那契数实现方式有多种方法,最容易理解的为递归法,也可使用动态规划降低时间复杂度,本文给出递归法和动态规划两种方法的代码实现。

示例:

图1 斐波那契数输入输出示例

方法一:递归法

代码:

python 复制代码
class Solution:
    def fib(self, n):
        if n == 0 or n == 1:
            return n
        else:
            return self.fib(n - 1) + self.fib(n - 2)

方法二:动态规划法

代码:

python 复制代码
class Solution:
    def fib(self, n):
        n1, n2 = 0, 1
        for _ in range(n):
            n1, n2 = n2, n1 + n2
        return n1

解释:

1)求f(n)需要计算n-1次,例如计算f(4),需要计算f(4)、f(3)和f(2),故循环n次后取保存上一次计算结果的n1。

相关推荐
SamChan904 分钟前
在Web应用中集成PDF多语言翻译功能:PDFTranslator API实战指南
前端·python·ai·pdf·yapi·机器翻译
天天进步201512 分钟前
Python全栈项目--智能办公自动化系统
开发语言·python
拳里剑气34 分钟前
C++算法:多源BFS
c++·算法·宽度优先·多源bfs
颜酱42 分钟前
09 | 重构项目结构
人工智能·python·langchain
ysa0510301 小时前
【板子】短序列dp(换成维护更小常数维度的dp)
c++·笔记·算法·板子
shwill1231 小时前
PID 算法(三)--- 增量 PID ↔ 单神经元 PID 等价映射
linux·算法
Sisphusssss2 小时前
香橙派5plus GPIO
linux·python·ubuntu
wabs6663 小时前
关于图论【卡码网110.字符串迁移的思考】
数据结构·算法·图论
颜酱3 小时前
08 | 把维度值同步到 Elasticsearch(生成阶段)
人工智能·python·langchain
hanlin033 小时前
刷题笔记:力扣第242、349题(哈希表)
笔记·算法·leetcode