您的位置:首页 > 其它

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

2016-03-23 14:17 417 查看
所谓的斐波纳契数列是指:

前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;
}
};



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: