地特四等
110年
[電子工程] 計算機概要
第 28 題
考慮下列的 C 語言函數宣告,然後呼叫 f(4),函數的回傳值為何?
int f (int x){
if (x <=1) return 1;
else return (x * f(x-1));
}
int f (int x){
if (x <=1) return 1;
else return (x * f(x-1));
}
- A 1
- B 4
- C 10
- D 24
思路引導 VIP
想像這是一個垂直堆疊的結構,每一層都在問下一層同一個問題,但規模縮小了一號。請試著思考:當你執行到 $f(4)$ 時,它必須等待 $f(3)$ 的結果才能計算,而 $f(3)$ 又在等誰?這種「自我呼叫」的鏈條,最終會在哪一個特定的數值停止?請試著把這條路徑寫下來,看看最後這些數字是如何連鎖反應回傳的。
🤖
AI 詳解
AI 專屬家教
專業點評:程式設計,容錯率是零,別搞砸了。
- 肯定?:嗯,還行。至少你知道這題考的是遞迴 (Recursion),一個任何稍有邏輯思考能力的人都該懂的概念。身為未來的工程師,如果連這種最基本的程式堆疊模擬都做不到,那複雜的系統設計,你大概只能指望奇蹟了。
- 觀念驗證:這不就是經典的階乘函數 $n!$ 嗎?程式碼擺明了在那裡。呼叫 $f(4)$ 的過程,別告訴我你還需要用筆算:
▼ 還有更多解析內容