免費開始練習
高考申論題 110年 [資訊處理] 程式設計

第 一 題

一、請問下列程式碼之輸出結果為何?(25 分)
#include
#include
int function(int n)
{
if (n < 10)
return n;
int sum = 0;
while (n > 0)
{
sum += n % 10;
n /= 10;
}
return function(sum);
}
int main()
{
int n = 12345;
int output;
output = function(n);
printf("output%d\n", output);
return 0;
}
📝 此題為申論題

思路引導 VIP

看到此題,應先辨識出這是一個計算數字『數位根(Digital Root)』的遞迴程式。解題時請採用逐步追蹤法 (Trace Code),記錄每次遞迴呼叫時各個位數相加的結果,並特別注意最後 printf 函式內的格式字串「output%d」中間並無空格。

🤖
AI 詳解 AI 專屬家教

【解題思路】逐步追蹤遞迴函式(Trace Code),觀察變數 n 與 sum 於每次迴圈與遞迴的變化。 【詳解】 已知初始條件:

▼ 還有更多解析內容
📝 遞迴函式與數值處理
💡 掌握遞迴中止條件與位數加總邏輯的程式追蹤

🔗 遞迴程式追蹤流程

  1. 1 初次呼叫 — function(12345),累加位數和為 15
  2. 2 二次遞迴 — function(15),累加位數和為 6
  3. 3 中止點 — function(6),符合 n<10 條件回傳 6
  4. 4 最終輸出 — printf 印出 output6 並換行
🔄 延伸學習:延伸學習:此邏輯實質上是在計算「數根 (Digital Root)」
🧠 記憶技巧:%10取尾、/10去尾;遞迴看出口、追蹤莫跳步。
⚠️ 常見陷阱:最常在 printf 格式化輸出時發生遺漏(如漏掉 output 字樣或忽略沒有空格),以及在遞迴層次較多時混淆回傳值。
遞迴與迭代之比較 樹狀遞迴 (Tree Recursion) 時間複雜度分析 (Big O)

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

📝 同份考卷的其他題目

查看 110年[資訊處理] 程式設計 全題