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)


相关文章
|
6月前
|
jenkins Shell 测试技术
|
6月前
|
安全 jenkins Java
Java、Python、C++支持jenkins和SonarQube(一)
Jenkins 是一个开源的 持续集成(CI)和持续交付(CD) 工具,用于自动化构建、测试和部署软件项目。它基于 Java 开发,支持跨平台运行,并拥有丰富的插件生态系统,可以灵活地扩展功能
395 5
|
6月前
|
jenkins Java Shell
Java、Python、C++支持jenkins和SonarQube(全集)
Jenkins 是一个开源的持续集成(CI)和持续交付(CD)工具,用于自动化构建、测试和部署软件项目。它基于 Java 开发,支持跨平台运行,并拥有丰富的插件生态系统,可以灵活地扩展功能
547 1
|
6月前
|
jenkins Java 持续交付
Java、Python、C++支持Jenkins和SonarQube(三)
Python与Jenkins和SonarQube
245 1
|
6月前
|
jenkins Java 测试技术
|
9月前
|
Java C++
力扣第一道困难题《3. 无重复字符的最长子串》,c++
首先我们看到这个题是肯定有一种暴力的硬解思路的,那就是将两个vector直接链接起来,然后再排序后,直接返回中间值,这个方法实现起来还是非常容易的,
271 0
|
算法框架/工具 C++ Python
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
1523 0
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
476 12
|
C++ Python
探索Python与C/C++混合编程的艺术
探索Python与C/C++混合编程的艺术
489 1
WK
|
机器学习/深度学习 Java 程序员
为什么Python比C++慢很多?
Python相较于C++较慢主要体现在:动态类型系统导致运行时需解析类型,增加开销;作为解释型语言,逐行转换字节码的过程延长了执行时间;自动内存管理和垃圾回收机制虽简化操作但也带来了额外负担;全局解释器锁(GIL)限制了多线程性能;尽管Python库方便灵活,但在性能上往往不及C++底层库。然而,Python在某些领域如数据分析、机器学习中,凭借其高级别抽象和简洁语法仍表现出色。选语言需依据具体应用场景和需求综合考量。
WK
754 1