Q72.
下列C 語言程式片段,當主程式執行int r=func01(5);時,下列何者正確?
數位電子 · 甲級 · 程式語言 · Q72
難易度分析
3 / 5
此題要求同時掌握遞迴概念、基底條件與呼叫次數,並在多答案情境下判斷所有正確選項,屬於中等難度範疇。
正確答案 (複選):①, ③
- ① 回傳值為120:階乘運算(factorial)中 5! = 5×4×3×2×1 = 120,此為典型的遞迴終止條件設計,當參數遞減至 1 時回傳 1 並逐層回乘。
- ③ func01()被呼叫5 次:遞迴呼叫次數等於初始參數值,func01(5) 會依序呼叫 func01(5)→func01(4)→func01(3)→func01(2)→func01(1),共 5 次呼叫。
錯誤選項解析
- ② 回傳值為100:回傳值 100 並非 5 的階乘結果,正確應為 120;100 可能混淆於 10² 的平方運算,與本題遞迴階乘邏輯無關。
- ④ func01()被呼叫4 次:呼叫次數應為 5 次而非 4 次;若僅呼叫 4 次則代表遞迴終止條件設定錯誤(例如在 n=2 時即回傳),將導致階乘計算結果不正確。
Learning Tip
"本題核心考點為 C 語言遞迴函數與階乘演算法。常見陷阱為混淆「呼叫次數」與「遞迴深度」——初始呼叫本身也算一次,故 func01(5) 共呼叫 5 次而非 4 次。實務上撰寫遞迴時需特別注意基底條件(base case)的設計,避免無窮遞迴導致堆疊溢位(stack overflow)。"
學員答題分佈
①回傳值為1200%
②回傳值為1000%
③func01()被呼叫5 次0%
④func01()被呼叫4 次0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!