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。

相关推荐
逆境不可逃4 分钟前
LeetCode 热题 100 之 279. 完全平方数 322. 零钱兑换 139. 单词拆分 300. 最长递增子序列
java·算法·leetcode·职场和发展
美式请加冰7 分钟前
位运算符的介绍和使用
数据结构·算法
tankeven9 分钟前
HJ127 小红的双生串
c++·算法
Fcy64811 分钟前
与链表有关的算法题
数据结构·算法·链表
KerwinChou_CN13 分钟前
LangGraph 快速入门
服务器·网络·算法
雨落在了我的手上16 分钟前
C语言之数据结构初见篇(2):顺序表之通讯录的实现
数据结构
MoRanzhi120327 分钟前
Pillow 图像算术运算与通道计算
图像处理·人工智能·python·计算机视觉·pillow·图像差异检测·图像算术运算
安之若素.re31 分钟前
918. 环形子数组的最大和
算法
阿阿阿阿里郎34 分钟前
ROS2快速入门--C++基础
开发语言·c++·算法
free-elcmacom36 分钟前
C++<x>new和delete
开发语言·c++·算法