斐波那契数列
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
分析
- T(n) = O(n),S(n) = O(1)
(1)
class Solution {
public:
int Fibonacci(int n) {
if(n == 0) return 0;
if(n == 1) return 1;
int one = 0;
int two = 1;
int sum = 0;
for(int i = 2; i <= n; ++i){
sum = one + two;
one = two;
two = sum;
}
return sum;
}
};
(2)
- sum为Fibonacci(i),one为Fibonacci(i-1),因此,sum+=one后sum更新为Fibonacci(i+1)
- one应该更新为Fibonacci(i),而Fibonacci(i) = Fibonacci(i+1) - Fibonacci(i-1) = sum - one
class Solution {
public:
int Fibonacci(int n) {
if(n == 0) return 0;
int one = 0;
int sum = 1;
for(int i = 2; i <= n; ++i){
sum += one;
one = sum - one;
}
return sum;
}
};

浙公网安备 33010602011771号