題目
連結
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;
}
};
類似題目
LeetCode 1137[第N個泰波那契數] 題目
LeetCode 509[斐波那契數] 題目
類似題解
LeetCode 1137[第N個泰波那契數] 題解
LeetCode 509[斐波那契數] 題解