moea_joint_essay
111年
[資訊] 資訊管理、程式設計
第 三 題
📖 題組:
有一費氏(Fibonacci)數學函式如下:(3 題,每題 5 分,共 15 分) F(n) = F(n – 1) + F(n – 2),n > 0 F(1) = 1、F(0) = 0
有一費氏(Fibonacci)數學函式如下:(3 題,每題 5 分,共 15 分) F(n) = F(n – 1) + F(n – 2),n > 0 F(1) = 1、F(0) = 0
📝 此題為申論題,共 3 小題
小題 (三)
為避免因為遞迴呼叫浪費函式重複計算的時間,試修改(一)中的程式碼,仍須使用遞迴的方式,使其計算時不須重複計算 F(n – 1)和 F(n – 2)函式。
思路引導 VIP
可使用記憶化 (Memoization) 技巧儲存已經計算過的結果,或使用尾遞迴 (Tail Recursion) 攜帶中間結果。
小題 (一)
請以遞迴(Recursive)方式寫出上列函式程式碼。
思路引導 VIP
直接根據數學定義,將 f(0) 與 f(1) 當作遞迴終止條件,並回傳遞迴呼叫相加的結果。
小題 (二)
請以非遞迴(Non- Recursive)方式寫出上列函式程式碼。
思路引導 VIP
使用迴圈(迭代法),保留前兩個數字的狀態累加到當前項目,避免函式重複呼叫。