题目描述
所谓的斐波纳契数列
是指:
前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
解决方案
- 非递归方式的
本题是斐波拉契数列的变种,斐波拉契数列常用的解决方案是递归法。而本题采用递归的方式出现运行超时的错误,故而,采用非递归的方式。
int find_nth_fibonacci(int n) {
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;
}
样例代码
:github