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。

相关推荐
爱打代码的小林7 分钟前
用 PyTorch 实现 CBOW 模型
人工智能·pytorch·python
123_不打狼12 分钟前
AE(自编码器)与 VAE(变分自编码器)核心区别:原理、目标与应用
深度学习·算法·机器学习·vae
Anastasiozzzz15 分钟前
LeetCode hot100 45 跳跃游戏2
算法·leetcode·游戏
近津薪荼17 分钟前
递归专题(3)——反转链表
数据结构·c++·学习·算法·链表
曲幽17 分钟前
FastAPI定时任务全攻略:从入门到避开多进程的坑
python·fastapi·web·async·sqlalchemy·lock·apscheduler·works
Tisfy19 分钟前
LeetCode 3013.将数组分成最小总代价的子数组 II:两个堆维护k-1小 + 滑动窗口
算法·leetcode·题解·优先队列··有序集合·滑动窗口
逢城戏元宇宙20 分钟前
区域文化IP‘逢城戏’进军元宇宙,AR盲盒带来哪些全新互动体
python
坚持就完事了22 分钟前
Java算法:递归
算法
senijusene25 分钟前
数据结构与算法:完全二叉树和非完全二叉数的各种详细操作以及哈希表的简单应用
数据结构·算法·链表
AI数据皮皮侠28 分钟前
中国耕地利用强度数据(2018-2023)
大数据·人工智能·python·深度学习·机器学习