❗️LeetCode_509_斐波那契数
【n的范围为:[0,30]】
题目描述:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:
F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
示例:
输入:n = 2 输出:1
输入:n = 5 输出:5
提示:0 <= n <= 100
|
解法1:递归
1 2 3 4 5 6 7 8 9 10 11 12
| class Solution { public: int fib(int n) {
if (n <= 0) return 0;
if (n == 1) return 1;
return (fib(n - 1) + fib(n - 2)) % 1000000007; } };
|
解法2:迭代
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class Solution { public: int fib(int n) {
if (n < 0) return 0;
int result[2] = {0,1}; if (n >= 0 && n < 2) return result[n];
long long fibOne = 0; long long fibTwo = 1; int fibN = 0;
for (int i = 2;i <= n;i++) {
fibN = (fibOne + fibTwo) % 1000000007;
fibOne = fibTwo; fibTwo = fibN; }
return fibN; } };
|