LeetCode LCR126[斐波那契数]
题目
链接
详情
实例
提示
题解
思路
首先想到用递归来求解,F(n) = F(n - 1) + F(n - 2)
但是吧,一看提示啊,0<= n <= 100,递归执行100次,那肯定是会超时的噻
所以单纯递归肯定是不可行的,此处我采用循环代替递归
当 n = 0 时,返回 0
当 n = 1 时,返回 1
当 n 大于 1 时,用循环代替递归来求解
循环体:F(n) = F(n - 1) + F(n - 2)
循环由 2 开始,由 n 结束
依次进入循环求得结果
并且求得的结果需要进行取模操作:F(n) = F(n) % 1000000007;
不然啊,如果不进行取模操作的话啊,就会越界啊,所以一定要记得取模
代码
class Solution {
public:
int fib(int n) {
if (0 == n)
return 0;
if (1 == n)
return 1;
long long fn_1 = 1, fn_2 = 0, iRet = 0;
for (int i = 2; i < n + 1; i++)
{
iRet = fn_1 + fn_2;
iRet = iRet % 1000000007;
fn_2 = fn_1;
fn_1 = iRet;
}
return iRet;
}
};
类似题目
类似题解
本文来自博客园,作者:EricsT,转载请注明原文链接:https://www.cnblogs.com/EricsT/p/18588041