免費開始練習
司法三等申論題 107年 [檢察事務官電子資訊組] 程式語言

第 一 題

📖 題組:
五、考慮以下 Prolog 程式: mystery([], []). mystery([X|Y], [X, X|Z]) :- mystery(Y, Z). (一)以上函式(function)mystery 的功能為何?(5 分) (二)以下目標的結果是什麼?必須顯示所有跟蹤步驟(tracing steps)。(5 分) mystery([1, 2, 3], X).
📝 此題為申論題,共 2 小題

小題 (一)

以上函式(function)mystery 的功能為何?(5 分)

思路引導 VIP

遇到 Prolog 遞迴程式,應先拆解為基本條件(Base case)與遞迴規則(Recursive step)。觀察輸入 [X|Y] 與輸出 [X, X|Z] 的模式對應,即可發現程式是將頭部元素 X 變成兩個 X,藉此推導出整體巨觀功能。

🤖
AI 詳解
AI 專屬家教

函式 mystery 的功能為:將輸入串列(List)中的每一個元素複製一次(即每個元素連續出現兩次),並回傳所構成的新串列。 程式邏輯解析如下:

  1. 基本條件 mystery([], []).:當輸入為空串列時,對應的輸出亦為空串列。

小題 (二)

以下目標的結果是什麼?必須顯示所有跟蹤步驟(tracing steps)。(5 分) mystery([1, 2, 3], X).

思路引導 VIP

看到 Prolog 程式追蹤題,核心在於掌握「模式匹配(Unification)」與「遞迴(Recursion)」機制的運作。解題時應依序寫下每次遞迴的串列頭部(Head)與尾部(Tail)分離過程,明確標示每層遞迴的變數綁定(Binding),最後到達 Base case 後再反向回代(Back-substitution)組裝出最終答案。

🤖
AI 詳解
AI 專屬家教

【解題思路】利用 Prolog 的模式匹配(Unification)機制,將串列拆分為頭部與尾部,並逐步展開遞迴呼叫直到符合基本條件(Base case),最後反向代入求得變數 X 的值。 【詳解】 已知:

升級 VIP 解鎖