免費開始練習
地特三等申論題 107年 [電力工程] 計算機概論

第 一 題

📖 題組:
一個正整數 n 的階乘(factorial)函數定義為 Factorial(n)= n!=1×2×3×…×n,並且定義 0!=1。(每小題 5 分,共 25 分) (一)下列是計算 Factorial(n)的一個虛擬碼(pseudocode)。如果我們呼叫Factorial(6),那麼這個程式執行到最後"return F"這一行時,F 的值會等於多少? Algorithm: Factorial (n) { F ← 1 i ← 1 while (i ≤ n) { F ← F × i i ← i + 1 } return F } (二)承上題,如果我們呼叫 Factorial(6),那麼這個程式執行到最後"return F"這一行時,i 的值會等於多少? (三)承上題,以上的方法我們將之稱為是一種"iteration solution",請說明何謂"iteration solution"? (四)階乘函數亦可以遞迴(recursion)方式定義:0!=1,n!= n×(n-1)!。以下是計算 Factorial(n)的一個 recursive solution 虛擬碼(pseudocode)。請說明何謂"recursive solution"? Algorithm: Factorial (n) { if (n = 0) return 1 else return n × Factorial (n − 1) } (五)承上題,如果 n 值很大,計算 Factorial(n)的 recursive solution 的空間複雜度(space complexity)為何?
📝 此題為申論題,共 5 小題

小題 (一)

下列是計算 Factorial(n)的一個虛擬碼(pseudocode)。如果我們呼叫Factorial(6),那麼這個程式執行到最後"return F"這一行時,F 的值會等於多少?

思路引導 VIP

面對程式碼追蹤題,應先辨識演算法的核心邏輯(此處為利用 while 迴圈計算連乘積)。接著採用『手動追蹤(Trace)』技巧,逐步記錄迴圈每一回合(Iteration)變數 F 與 i 的值,直到滿足跳出迴圈的條件為止。

🤖
AI 詳解
AI 專屬家教

【解題關鍵】採用手動追蹤(Trace)記錄每一回合(Iteration)迴圈變數的變化與條件判斷。 【解答】 計算:逐步推導 Factorial(6) 的執行過程,此時 n = 6

小題 (二)

承上題,如果我們呼叫 Factorial(6),那麼這個程式執行到最後"return F"這一行時,i 的值會等於多少?

思路引導 VIP

追蹤演算法的執行流程,特別留意 while 迴圈(while loop)的終止條件。當迴圈條件不再成立而跳出時,計數器變數通常已經執行了最後一次遞增,因此迴圈結束時 i 的值會剛好是不符合條件的第一個數字(即 n + 1)。

🤖
AI 詳解
AI 專屬家教

【解題關鍵】掌握 while 迴圈(while loop)的執行邏輯與終止條件,特別是迴圈計數器跳出迴圈時的數值變化。 【解答】 追蹤呼叫 Factorial(6) 時,變數 i 的變化過程如下:

小題 (三)

承上題,以上的方法我們將之稱為是一種"iteration solution",請說明何謂"iteration solution"?

思路引導 VIP

考生應直擊「迭代(Iteration)」的核心定義,即透過迴圈結構(如 while/for)反覆執行程式碼。作答時除了闡述定義,建議與遞迴(Recursion)進行對比,並點出其不需額外函式呼叫堆疊(Call Stack)、執行效率較高等底層系統優勢,以展現邏輯層次並獲取高分。

🤖
AI 詳解
AI 專屬家教

【破題】 「迭代解法」(Iteration Solution)是指在程式設計中,利用迴圈控制結構反覆執行特定程式區塊,以逐步逼近並求得最終結果的解題策略。 【論述】

小題 (四)

階乘函數亦可以遞迴(recursion)方式定義:0!=1,n!= n×(n-1)!。以下是計算 Factorial(n)的一個 recursive solution 虛擬碼(pseudocode)。請說明何謂"recursive solution"?

思路引導 VIP

看到遞迴(Recursion),首先聯想其兩大核心要件:『終止條件(Base case)』與『遞迴呼叫(Recursive step)』。作答時除了定義『函式呼叫自身』的表層意義外,建議從系統底層的『呼叫堆疊(Call Stack)』運作原理切入,展現對軟硬體架構的全面理解。

🤖
AI 詳解
AI 專屬家教

【破題】 「遞迴解法(Recursive solution)」是指在解決問題時,函式(Function)或副程式在其定義與執行過程中,直接或間接地「呼叫自身(Call itself)」來處理問題的一種程式設計與演算法技巧。 【論述】

小題 (五)

承上題,如果 n 值很大,計算 Factorial(n)的 recursive solution 的空間複雜度(space complexity)為何?

思路引導 VIP

看到遞迴演算法的空間複雜度,應立即聯想到系統底層的「呼叫堆疊(Call Stack)」。每一次遞迴呼叫皆需推入一個新的堆疊框架(Stack Frame),因此最大遞迴深度即決定了空間複雜度的大 O 級別。

🤖
AI 詳解
AI 專屬家教

【破題】 遞迴演算法的空間複雜度取決於最大遞迴深度(Maximum Recursion Depth),亦即系統運行時呼叫堆疊(Call Stack)的累積層數。 【論述】

升級 VIP 解鎖