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

CSDN21天学习挑战赛
在这里插入图片描述

欢迎加入【Linux C/C++/Python社区】一起探讨和分享Linux C/C++/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。



题目描述

斐波那契数 (通常用 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)

在这里插入图片描述
在这里插入图片描述


posted @ 2022-08-21 22:57  Mindtechnist  阅读(6)  评论(0编辑  收藏  举报  来源