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

来源:互联网 发布:python splinter 编辑:程序博客网 时间:2024/06/05 14:09

所谓的斐波纳契数列是指:

  • 前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

题目就是斐波那契数算法的变形。关于斐波那契数,首先想到递归

class Solution{public:    /**     * @param n: an integer     * @return an integer f(n)     */    int fibonacci(int n) {        // write your code here        if ( n == 1 ) {            return 0;        } else if ( n == 2 || n == 3 ) {            return 1;        }         /*else {            return fibonacci(n-1) + fibonacci(n-2);        }};
但是递归太耗费时间,结果超时。
再换成非递归形式
<pre name="code" class="cpp">class Solution{public:    /**     * @param n: an integer     * @return an integer f(n)     */    int fibonacci(int n) {        // write your code here        if ( n == 1 ) {            return 0;        } else if ( n == 2 || n == 3 ) {            return 1;        }         int s1 = 1;        int s2 = 1;        int i = 4;        int sum = 0;        while (i <= n) {            sum = s1 + s2;            s1 = s2;            s2 = sum;            i++;        }        return sum;    }};




0 0
原创粉丝点击