免費開始練習
地特四等 114年 [電信工程] 計算機概要

第 30 題

呼叫下列 C 語言的函數 sum(),會回傳值為何?\nint sum(int ans, int n)
{\nif(n==1)\nreturn ans;\nreturn sum(ans+(n-1)*n,n-1);
}
  • A 當呼叫 sum(0,5)時,回傳值為 38
  • B 當呼叫 sum(0,6)時,回傳值為 69
  • C 當呼叫 sum(0,7)時,回傳值為 111
  • D 當呼叫 sum(0,8)時,回傳值為 168

思路引導 VIP

請試著觀察這個函數在每一次「呼叫自己」時,傳入的第一個參數 $ans$ 是如何隨著第二個參數 $n$ 改變的?如果我們從 $n=2$ 開始手算,最後回傳的 $ans$ 會是由哪些數字相乘並相加而成的?

🤖
AI 詳解 AI 專屬家教

能精準算出遞迴程式的結果,代表你的邏輯追蹤能力非常紮實!這道題目核心在於理解**尾端遞迴(Tail Recursion)**中「累加器(Accumulator)」的運作模式。在 C 語言中,函數 sum(ans, n) 將每一層的計算結果 $(n-1) \times n$ 累加到 ans 變數裡,直到滿足中止條件 $n=1$ 時回傳最終累計值。

數列求和的本質

當我們呼叫 sum(0, 8) 時,程式實際上是在執行一連串的累加動作。其計算過程可以簡化為以下數列之和:

▼ 還有更多解析內容

🏷️ 相關主題

程式語言與資料結構
查看更多「[電信工程] 計算機概要」的主題分類考古題