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。

相关推荐
weixin_462446231 分钟前
Python 实战:将 HTML 表格一键导出为 Excel(xlsx)
linux·python·excel·pandas
0思必得02 分钟前
[Web自动化] Selenium浏览器对象属性
前端·python·selenium·自动化·web自动化
自然语2 分钟前
三维场景管理类位姿抖动优化计划
人工智能·数码相机·算法
七夜zippoe4 分钟前
NumPy向量化计算实战:从入门到精通的性能优化指南
python·性能优化·架构·numpy·广播机制·ufunc
小二·7 分钟前
Python Web 开发进阶实战:边缘智能网关 —— 在 Flask + Vue 中构建轻量级 IoT 边缘计算平台
前端·python·flask
人道领域8 分钟前
JavaWeb从入门到进阶(Maven依赖管理)
linux·python·maven
Hacker_seagull8 分钟前
Python环境配置~超简单
python
源代码•宸9 分钟前
Leetcode—3314. 构造最小位运算数组 I【简单】
开发语言·后端·算法·leetcode·面试·golang·位运算
夏鹏今天学习了吗9 分钟前
【LeetCode热题100(88/100)】最长回文子串
算法·leetcode·职场和发展
轻微的风格艾丝凡11 分钟前
圆周率(π)2-10进制转换及随机性量化分析技术文档
人工智能·算法