LONGEPASS
Q173.

一個遞迴演算法如下,下述何者正確?電腦軟體設計共同科目 乙級 第 173 題 題目 圖片

電腦軟體設計共同科目 · 乙級 · Q173

難易度分析

3 / 5

本題需追蹤兩個相互關聯的遞迴函數執行流程,要求考生能精確判斷條件分支的優先順序以及正確識別遞迴的終止條件,具有一定的邏輯推演過程。

正確答案:②mysteryY(0,0)之結果為2

② mysteryY(0,0)之結果為2:mysteryY(0,0) 因 `a == 0` 條件成立,執行 `return mysteryX(b+2)` 即 `mysteryX(2)`,根據 mysteryX 的遞迴定義,當 `a == 2` 時直接回傳 2,因此結果為 2。

錯誤選項解析

  • ① mysteryY(0,0)之結果為0:mysteryY(0,0) 呼叫時,因 `a == 0` 成立,會回傳 `mysteryX(b+2)` 即 `mysteryX(2)`,而 `mysteryX(2)` 直接回傳 2,故結果為 2 而非 0。
  • ③ mysteryY(0,0)之結果為4:此選項誤解了 遞迴終止條件,`mysteryX(2)` 的 base case 直接回傳 2,不會進行任何乘法運算,故結果不可能為 4。
  • ④ mysteryY(0,0)之結果為8:此選項錯誤假設 mysteryX 會執行多層遞迴乘法,但實際上 `mysteryX(2)` 命中 `if (a == 2) return 2;` 的終止條件,直接回傳 2,故結果不可能為 8。
Learning Tip

"本題考 遞迴演算法的追蹤與 base case 判斷。常考陷阱在於未正確識別遞迴的終止條件,導致錯誤展開計算。解題關鍵:先確認 if 條件式的順序,`mysteryY` 中 `a == 0` 優先於 `b == 0` 判斷,且 `mysteryX(2)` 直接回傳 2 不進入遞迴乘法。實務上撰寫遞迴時,務必明確定義 base case 以避免無限遞迴。"

學員答題分佈

①mysteryY(0,0)之結果為00%
②mysteryY(0,0)之結果為20%
③mysteryY(0,0)之結果為40%
④mysteryY(0,0)之結果為80%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目