(剑指offer)斐波那契数列
牛客网:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
解题思路:这里如果用递归的话时间复杂度和空间复杂度都会很高
function Fibonacci(n){
if(n == 0 || n == 1) {
return n
}
return Fibonacci(n-1) + Fibonacci(n-2)
}
所以我们用迭代的方法
迭代相加,并保存需要不断相加的两个数
function Fibonacci(n){
// write code here
let f1 = 1
let f2 = 1
if(n<=0){
return 0
}
if(n == 1 || n== 2) {
return 1
}
while(n-- > 2){
f1 = f1+f2
f2 = f1 - f2
}
return f1
}
leetcode:
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
var fib = function(n) {
if(n == 0 || n ==1) {
return n
}
let a = 1, b =0
while (n-- > 1){
a = a+b
b = a-b
a %= 1000000007
}
return a
};
不积跬步无以至千里