地特三等申論題
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 分)
二、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 小題
小題 (一)
執行下列函式的呼叫,結果為何?(5 分)
(mystery (list 4 5 6))
思路引導 VIP
面對遞迴(Recursion)程式追蹤題,應先找出「終止條件(Base case)」與「遞迴呼叫(Recursive call)的縮減方式」。此題利用逐步代入法,追蹤 Scheme 中 cdr(取得去除首項後的剩餘串列)的執行過程,將清單元素逐層展開即可得出結果。
小題 (二)
解釋這個 mystery 函式,在計算什麼?(5 分)
思路引導 VIP
考生應先拆解 Scheme 語法中的遞迴結構:觀察終止條件(Base case)與遞迴步驟(Recursive step)。終止條件為空串列時回傳 0,遞迴步驟為每次取串列剩餘部分(cdr)並將結果加 1,由此即可推導出其作用為計算串列元素數量。
小題 (三)
用 Scheme 語法,定義出一個函式 factorial n,這個函式要算出 n!。(10 分)
思路引導 VIP
看到階乘 (n!) 應立刻聯想到遞迴 (Recursion) 的兩個核心要件:基礎條件 (Base Case) 與遞迴步驟 (Recursive Step)。在 Scheme 中,利用 define 定義函式,並透過 if 或 cond 控制條件分支,實現 n 乘以 (n-1)! 的遞迴呼叫即可得解。