剑指offer--07. 斐波那契数列

题目:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39

斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987...
F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)

思路:
公式简直是完美的递归环境,不过可能会栈溢出
因此使用迭代法,用两个变量保存计算过程中的结果,并复用起来

public class Solution {
    public int Fibonacci(int n) {
         if(n<1) 
             return 0;
        int[] fibonacci = new int[2];
        fibonacci[0] = 1;
        fibonacci[1] = 1;
        while(n>2){
            int temp = fibonacci[0]+fibonacci[1];
            fibonacci[0] = fibonacci[1];
            fibonacci[1] = temp;
            n--;
        }
        return fibonacci[1];
    }
}

你可能感兴趣的:(剑指offer--07. 斐波那契数列)