免費開始練習
普考申論題 112年 [資訊處理] 程式設計概要

第 三 題

📖 題組:
二、根據以下C程式碼,回答下列問題: 1 #include 2 int f(int a, int b){ 3 if (b==1) return a; 4 else { 5 int value = a + f(a, b-1); 6 return value; 7 } 8 } 9 int main() { 10 printf("%d\n", f(5, 3)); 11 printf("%d\n", f(0, 0)); 12 }
📝 此題為申論題,共 4 小題

小題 (三)

請說明第11行的輸出,以及其運作邏輯。(7分)

思路引導 VIP

思考當傳入的初始條件不符合中止條件的演進方向時會發生什麼事。此題傳入 b=0,遞迴呼叫時 b 一直減 1 (-1, -2, -3...),永遠無法命中 b==1,這會造成記憶體耗盡的現象。

🤖
AI 詳解
AI 專屬家教

【考點分析】 本題考查不良的遞迴設計(缺乏健全的邊界條件防護)所導致的無窮遞迴(Infinite recursion)以及系統堆疊溢位(Stack Overflow)現象。 【理論/法規依據】

小題 (一)

請問那一行是此遞迴程式的中止條件?(5分)

思路引導 VIP

觀察遞迴函式中,當某個條件成立時不再進行函式的自我呼叫,而直接回傳數值的判斷式即為中止條件 (Base case)。直接定位帶有 return 且不含遞迴呼叫的 if 判斷式。

🤖
AI 詳解
AI 專屬家教

【考點分析】 本題考查考生對遞迴結構(Recursion)中基本要件(Base case / 中止條件)的識別能力。 【理論/法規依據】

小題 (二)

請說明第10行的輸出,以及其運作邏輯。(6分)

思路引導 VIP

將引數 a=5, b=3 實際代入程式中演練。每次遞迴都會將 a 加上 f(a, b-1) 的結果。展開算式後,發現這是實作整數乘法的邏輯。

🤖
AI 詳解
AI 專屬家教

【考點分析】 本題測驗遞迴程式的追蹤能力,以及從程式邏輯中抽象出數學意義的能力。 【理論/法規依據】

小題 (四)

請說明函式f的主要功能,包含輸入參數與輸出結果的關係。(7分)

思路引導 VIP

綜合前兩題的觀察。正常情況下(b>=1)函式在做乘法。但因為缺乏防呆機制,所以它並不是一個通用的乘法函式。應該明確指出其輸入限制與輸出的數學對應關係。

🤖
AI 詳解
AI 專屬家教

【考點分析】 本題要求考生統整前述對程式碼的個別分析,歸納出函式整體的設計意圖與潛在的邏輯缺陷。 【理論/法規依據】

🏷️ 相關主題

程式語言與演算法實作
查看更多「[資訊處理] 程式設計概要」的主題分類考古題