斐波那契数列

题目描述

大家都知道斐波那契数列,现在要求输入一个整数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;
    }
};

  

posted @ 2020-04-24 14:40  Somnuspoppy  阅读(133)  评论(0)    收藏  举报