地特四等申論題
114年
[資訊處理] 程式設計概要
第 二 題
二、請問以 a(7,20)呼叫下列 a()函式,函式執行完後其回傳值為何?並需詳述執行過程。(20 分)
int a(int n, int m) {
if (n >= 10) {
if (m < 16) {
return n + m ;
}
else {
return a(n, m-2) + m ;
}
}
else {
return a(n+1, m) + n ;
}
}
int a(int n, int m) {
if (n >= 10) {
if (m < 16) {
return n + m ;
}
else {
return a(n, m-2) + m ;
}
}
else {
return a(n+1, m) + n ;
}
}
📝 此題為申論題
思路引導 VIP
看到本題,首要辨識出這是「遞迴函式(Recursive Function)的執行追蹤」考題。解題時應該從:(1) 起始呼叫條件 a(7,20) 進入,逐步對應條件判斷分支(if-else)。(2) 由前往後將函式呼叫的展開路徑列出來,直到碰到不再呼叫遞迴的基礎條件(Base Case)。(3) 接著執行「回溯(Backtracking)」,將取得的基礎條件數值,一步一步往回代入公式中,最後求得結果。(4) 答案要寫出最終回傳值,且過程要詳細條列以符合題目「詳述執行過程」的要求。
🤖
AI 詳解
AI 專屬家教
【考點分析】 本題考查遞迴函式的執行追蹤與回傳值計算,考驗考生對函式呼叫堆疊(Call Stack)、傳遞參數改變及條件分支(if-else)的掌握度。 【理論/法規依據】
▼ 還有更多解析內容