LeetCode 509[斐波那契數]

EricsT發表於2024-12-04

題目

連結

LeetCode 509[斐波那契數]

詳情

LeetCode 509[斐波那契數]

例項

LeetCode 509[斐波那契數]

提示

LeetCode 509[斐波那契數]

題解

思路

遞迴求值,但是吧,如果是用遞迴的話有可能會造成記憶體超出限制的錯誤,當然我不能確定會不會報此錯誤,因為我沒有試過

此處我是用迴圈代替遞迴的

n為0時,fn為0

n為1時,fn為1

n為2時,fn為 fn_1+fn_2 = 0 + 1 = 1

n為3時,fn為 fn_1+fn_2 = 1 + 1 = 2

n為4時,fn為 fn_1+fn_2 = 1 + 2 = 3

n為5時,fn為 fn_1+fn_2 = 2 + 3 = 5

藍色部分是在迴圈外面進行的,也就是:

當n為0時,直接返回0

當n為1時,直接返回1

紅色部分是在迴圈內進行的,也就是開始遞迴了:

設定 i 的初始值為 2

則此時 fi_1 的值為 f1 的值,fi_2 的值為 f0 的值,此時可以求出 fi 的值

然後再將 fi_1 的值賦給 fi_2,將 fi 的值賦值 fi_1,再透過 fi = fi_1 + fi_2 來求取 fi 的值

直到 i 為 n,計算出 fn 的值後退出迴圈並返回 fn

程式碼

class Solution {
public:
    int fib(int n) {
      
        if (0 == n)
            return 0;
        
        if (1 == n)
            return 1;
        
        int f_2 = 0, f_1 = 1;
        int iRet = 0;
        
        for (int i = 2; i < n + 1; i++)
        {
            iRet = f_1 + f_2;
            f_2 = f_1;
            f_1 = iRet;  
        }
        
        return iRet;
    }
};

類似題目

LeetCode 1137[第N個泰波那契數] 題目

類似題解

LeetCode 1137[第N個泰波那契數] 題解

相關文章