免費開始練習
高考申論題 111年 [電力工程] 計算機概論

第 二 題

📖 題組:
二、Scheme 是一種函式程式語言(functional programming language),其中定義了一個函式如下: (define (mystery input-list) (cond ((null? input-list) 0) (else ( + 1 (mystery (cdr input-list)))))) (一)執行下列函式的呼叫,結果為何?(5 分) (mystery (list 4 5 6)) (二)解釋這個 mystery 函式,在計算什麼?(5 分) (三)用 Scheme 語法,定義出一個函式 factorial n,這個函式要算出 n!。(10 分)
📝 此題為申論題,共 3 小題

小題 (二)

解釋這個 mystery 函式,在計算什麼?(5 分)

思路引導 VIP

考生應先拆解 Scheme 語法中的遞迴結構:觀察終止條件(Base case)與遞迴步驟(Recursive step)。終止條件為空串列時回傳 0,遞迴步驟為每次取串列剩餘部分(cdr)並將結果加 1,由此即可推導出其作用為計算串列元素數量。

🤖
AI 詳解
AI 專屬家教

【破題】此 mystery 函式的作用為計算輸入串列(list)的長度(即元素總個數)。 【論述】 一、基本條件(Base Case):當輸入的串列為空(null? input-list)時,回傳 0,代表空串列的長度為 0。

小題 (一)

執行下列函式的呼叫,結果為何?(5 分)
(mystery (list 4 5 6))

思路引導 VIP

面對遞迴(Recursion)程式追蹤題,應先找出「終止條件(Base case)」與「遞迴呼叫(Recursive call)的縮減方式」。此題利用逐步代入法,追蹤 Scheme 中 cdr(取得去除首項後的剩餘串列)的執行過程,將清單元素逐層展開即可得出結果。

🤖
AI 詳解
AI 專屬家教

【解題思路】運用逐步代入法(Step-by-step trace),追蹤 Scheme 遞迴函式中終止條件(Base case)與遞迴步驟的執行邏輯。 【詳解】 已知:輸入參數為串列 (list 4 5 6)。函式 mystery 的邏輯為:若串列為空(null?)則回傳 0;否則回傳 1 加上對「去除首項之剩餘串列(cdr)」進行遞迴呼叫的結果。

小題 (三)

用 Scheme 語法,定義出一個函式 factorial n,這個函式要算出 n!。(10 分)

思路引導 VIP

看到階乘 (n!) 應立刻聯想到遞迴 (Recursion) 的兩個核心要件:基礎條件 (Base Case) 與遞迴步驟 (Recursive Step)。在 Scheme 中,利用 define 定義函式,並透過 ifcond 控制條件分支,實現 n 乘以 (n-1)! 的遞迴呼叫即可得解。

🤖
AI 詳解
AI 專屬家教

【破題】 利用 Scheme 的遞迴(Recursion)特性,可透過定義基礎條件與遞迴公式來計算階乘(Factorial)。 【論述】

📝 Scheme 遞迴邏輯
💡 掌握函式語言遞迴三要素:基本條件、遞迴步驟、收斂方向。

🔗 Scheme 遞迴執行機制

  1. 1 條件檢查 (Check) — 判斷 (null? input-list) 是否為真,若真則回傳 0。
  2. 2 規模縮減 (Reduce) — 利用 (cdr input-list) 剝離首元素,縮小參數規模。
  3. 3 遞迴呼叫 (Call) — 進入下一層 mystery,並於回傳路徑執行 (+ 1 ...)。
🔄 延伸學習:延伸學習:掌握如何將一般遞迴改寫為尾端遞迴以節省堆疊空間。
🧠 記憶技巧:遞迴三部曲:一看出口 (null?)、二看收斂 (cdr)、三看運算 (+1)。
⚠️ 常見陷阱:容易將 cdr(剩餘串列)與 car(首個元素)混淆;申論時常忽略說明遞迴收斂至 Base Case 的過程。
尾端遞迴 (Tail Recursion) LISP 語法特性 Higher-order Functions

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

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

🏷️ 相關主題

遞迴與迭代:階乘函數的計算與應用
查看更多「[電力工程] 計算機概論」的主題分類考古題