Q60.
下列仿C 程式片段為計算費氏級數(Fibonacci Number),其中三行程式尚未完成,下列何者敘述為正確?
電腦軟體設計共同科目 · 乙級 · Q60
難易度分析
3 / 5
本題要求分析程式片段中變數更新的邏輯順序。考生必須精確掌握迭代演算法中暫存變數的運算與賦值流程,且需在多個相似的賦值表達式中分辨出正確的邏輯推移,具有一定的邏輯分析要求。
正確答案:①(I)的程式片段為c=a+b
① (I)的程式片段為c=a+b:在費氏級數迭代演算法中,(I) 處需要計算下一項數值,正確寫法為 `c = a + b`,即將前兩項數值相加後暫存於變數 c 中,這是費氏數列的核心遞迴公式 F(n) = F(n-1) + F(n-2) 的程式實作。
錯誤選項解析
- ② (II)的程式片段為a=b+c:若 (II) 寫成 `a = b + c` 會導致數值錯誤,因為在 (I) 已執行 `c = a + b` 的情況下,`b + c` 等同於 `b + (a + b) = a + 2b`,這不符合費氏數列的遞迴關係。正確做法應是將 b 的值賦給 a,即 `a = b`,完成指標變數的向前推移。
- ③ (I)的程式片段為a= b+c:若 (I) 寫成 `a = b + c`,此時 c 尚未被賦予正確值,會導致使用未初始化的變數或舊值進行運算,破壞費氏數列的計算邏輯。正確應先以 `c = a + b` 計算新值後,再進行變數推移。
- ④ (II)的程式片段為b=a+c:若 (II) 寫成 `b = a + c`,在 (I) 已執行 `c = a + b` 的前提下,結果會變成 `b = a + (a + b) = 2a + b`,這完全偏離了費氏數列的定義。正確做法應是 `b = c`,將新計算的值賦給 b 以完成迭代更新。
Learning Tip
"費氏級數迭代的常考陷阱在於變數更新的順序與暫存變數的使用。標準三段式更新為:① `c = a + b`(計算新值)、② `a = b`(舊 b 推移至 a)、③ `b = c`(新值推移至 b)。容易混淆的錯誤是將推移步驟寫成多餘的加法運算,或搞錯 a、b、c 三者的賦值順序,導致數列計算結果呈指數暴衝而非正確的費氏成長。"
學員答題分佈
①(I)的程式片段為c=a+b0%
②(II)的程式片段為a=b+c0%
③(I)的程式片段為a= b+c0%
④(II)的程式片段為b=a+c0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!