LeetCode 509. 斐波那契数 C/C++/Python

简介: LeetCode 509. 斐波那契数 C/C++/Python

题目描述

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 01 开始,后面的每一项数字都是前面两项数字的和。也就是:

F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1

给定 n ,请计算 F(n)

示例 1:

输入:n = 2
输出:1
解释:F(2) = F(1) + F(0) = 1 + 0 = 1

示例 2:

输入:n = 3
输出:2
解释:F(3) = F(2) + F(1) = 1 + 1 = 2

示例 3:

输入:n = 4
输出:3
解释:F(4) = F(3) + F(2) = 2 + 1 = 3

☞动态规划解法

C语言版

int fib(int n) {
  int ret[31];
  int i = 0;
  ret[0] = 0;
  ret[1] = 1;
  if (n > 1)
  {
    for (i = 2; i < n + 1; i++)
    {
      ret[i] = ret[i - 1] + ret[i - 2];
    }
  }
  return ret[n];
}

C++版

class Solution {
public:
  int fib(int n) {
    vector<int> ret;
    ret.push_back(0);
    ret.push_back(1);
    if (n > 1)
    {
      for (int i = 2; i < n + 1; i++)
      {
        ret.push_back(ret[i - 1] + ret[i - 2]);
      }
    }
    return ret[n];
  }
};

Python版

class Solution:
    def fib(self, n: int) -> int:
        sum = []
        sum.append(0)
        sum.append(1)
        if n > 1:
            for i in range(2, n + 1):
                sum.append(sum[i - 1] + sum[i - 2])
        return sum[n]

☞递归解法

C语言版

int fib(int n) {
  if(n < 2)
    {
        return n;
    }
    return fib(n - 1) + fib(n - 2);
}

C++版

class Solution {
public:
  int fib(int n) {
    if(n < 2)
        {
            return n;
        }
        return this->fib(n - 1) + this->fib(n - 2);
  }
};

Python版

class Solution:
    def fib(self, n: int) -> int:
        if n < 2:
            return n
        return self.fib(n - 1) + self.fib(n - 2)


相关文章
|
7天前
|
Ubuntu C++ Docker
Docker的基本指令和HTML/PYTHON/C++的简单创建示例
Docker的基本指令和HTML/PYTHON/C++的简单创建示例
|
10天前
|
Java Go C#
编程语言C#、C++、Java、Python、go 选择哪个好?
我想说的是,不论选择哪种编程语言,决定选择的都是你最终的目的,做选择之前,先充分调研每一个选择项,再做选择思路就会非常清晰了。
27 3
|
10天前
|
存储 算法 调度
力扣中级算法(Python)
力扣中级算法(Python)
|
10天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
10天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
10天前
|
算法 Python
力扣初级算法(Python)(二)
力扣初级算法(Python)(二)
|
15天前
|
SQL 算法 数据可视化
LeetCode题目92:反转链表ll 【python 递归与迭代方法全解析】
LeetCode题目92:反转链表ll 【python 递归与迭代方法全解析】
|
15天前
|
SQL 算法 数据可视化
LeetCode题目99:图解中叙遍历、Morris遍历实现恢复二叉树搜索树【python】
LeetCode题目99:图解中叙遍历、Morris遍历实现恢复二叉树搜索树【python】
|
15天前
|
存储 算法 数据可视化
python多种算法对比图解实现 验证二叉树搜索树【力扣98】
python多种算法对比图解实现 验证二叉树搜索树【力扣98】
|
15天前
|
数据采集 SQL 算法
LeetCode题目75:颜色分类【python】
LeetCode题目75:颜色分类【python】