LintCode-366. 斐波纳契数列

题目

描述

查找斐波纳契数列中第 N 个数。

所谓的斐波纳契数列是指:
前2个数是 0 和 1 。
第 i 个数是第 i-1 个数和第i-2 个数的和

斐波纳契数列的前10个数字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...

样例

给定1,返回0
给定2,返回1
给定10,返回34

解答

思路

1.递归(在Lint Code回报TLE)
2.递推

代码

class Solution {
    /**
     * @param n: an integer
     * @return an integer f(n)
     */
    public int fibonacci(int n) {
        // write your code here
        if(n < 3) return n-1;
        // else return fibonacci(n-1) + fibonacci(n-2);
        else{
            int a = 0, b =1, c = 0;
            for (int i = 0; i < n - 2; i++ ){
                c = a + b;
                a = b;
                b = c;
            }
            return c;
        }
    }
}

后记

一般面试的话我都会写:

class Solution {
    /**
     * @param n: an integer
     * @return an integer f(n)
     */
    public int fibonacci(int n) {
        // write your code here
        if(n < 3) return n-1;
        else return fibonacci(n-1) + fibonacci(n-2);
        }
    }
}

结果应该是对的,但是这里LintCode会报TLE

你可能感兴趣的:(LintCode-366. 斐波纳契数列)