大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。
斐波那契数列是一个满足
的数列
数据范围:
要求:空间复杂度
,时间复杂度
,本题也有时间复杂度
的解法
一个正整数n
输出一个正整数。
4
3
根据斐波那契数列的定义可知,fib(1)=1,fib(2)=1,fib(3)=fib(3-1)+fib(3-2)=2,fib(4)=fib(4-1)+fib(4-2)=3,所以答案为3。
1
1
2
1
function Fibonacci(n)
{
// write code here
if(n === 0) return 0;
if(n === 1) return 1;
return Fibonacci(n-1) + Fibonacci(n-2)
}
module.exports = {
Fibonacci : Fibonacci
}; function Fibonacci(n)
{
// write code here
let ret = [0, 1];
for(let t = 2; t <= n; t++) {
ret[t] = ret[t-2] + ret[t-1];
}
return ret[n];
} // 一对多递归要使用缓存机制来加速
const map = new Map();
function Fibonacci(n) {
if (n > 1) {
let result = map.get(n);
if (result) return result;
result = Fibonacci(n - 1) + Fibonacci(n - 2);
map.set(n, result);
return result;
} else {
return n;
}
}
module.exports = {
Fibonacci: Fibonacci,
}; function Fibonacci(n)
{
// write code here
if(n == 0){return 0}
else if(n <= 2 ){return 1}
else return Fibonacci(n-1)+Fibonacci(n-2);
} function Fibonacci(n)
{
let arr = [0, 1]
for(let i = 2; i <= n; i++){
arr.push(arr[i-1] + arr[i-2])
}
return arr[n]
}
module.exports = {
Fibonacci : Fibonacci
}; function Fibonacci(n)
{
// write code here
//f(1)=1,f(2)=1,f(n)=f(n-1)+f(n-2) 从第三项开始,所在项为前两项之和
var num0 = 0;
var num1 = 1;
var FArray = [0,1]
for(let i=2;i<=39;i++){
FArray.push(FArray[i-1]+FArray[i-2]);
}
return FArray[n]
}
module.exports = {
Fibonacci : Fibonacci
};
class Solution { public: int Fibonacci(int n) { int f = 0, g = 1; while(n--) { g += f; f = g - f; } return f; } };