上题:
写一个函数,输入 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。
示例 1:
输入:n = 2 输出:1 示例 2:
输入:n = 5 输出:5
提示:
0 <= n <= 100
斐波那契数列问题的由来
假设一对初生兔子要一个月才到成熟期,而一对成熟兔子每月会生一对兔子,那么,由一对初生兔子开始,12 个月后会有多少对兔子呢?
按照上图,兔子问题得以解决,答案为144对。以上数列,即“斐波那契数列”。
第一项和第二项是1,之后的每一项为之前两项的和。即: a1=a2=1
解法1:递归法
var fib = function(n) {
if(n < 1) return 0 ;
else if(n <=2 ) return 1;
return (fib(n-1) + fib(n-2))% (1e9 + 7);
}
解法2:
var fib = function(n) {
if(n < 1) return 0 ;
else if(n <=2 ) return 1;
let temp = 1; let temp1 = 1; let result;
for(let i = 3; i<= n;i++){
result = (temp+temp1) % (1e9 + 7);
temp = temp1;
temp1 = result;
}
return result;
};