免費開始練習
調查局三等申論題 110年 [電子科學組] 計算機概論

第 二 題

📖 題組:
請回答下列問題:
📝 此題為申論題,共 2 小題

小題 (二)

請問以下程式,輸出結果為何?(8 分)
#include
using namespace std;
unsigned long long int fun(unsigned int n)
{
unsigned long long int x = 0;
unsigned long long int y = 1;
for (unsigned int j = 2; j <= n; ++j){
if (j % 2 == 0) x += y;
else y += x;
}
if(n % 2 == 0) return x;
else return y;
}
int main(){
int x = 5, y = 7;
cout << fun(x) << endl;
cout << fun(y);
}

思路引導 VIP

面對程式追蹤題,應優先建立「變數狀態追蹤表(Trace Table)」,逐圈記錄條件分支下的數值變化。觀察變數 x 與 y 交替相加的模式,可敏銳察覺此演算法實為計算費氏數列(Fibonacci Sequence)第 n 項之變形實作。

🤖
AI 詳解
AI 專屬家教

【解題思路】建立變數狀態追蹤表,逐次記錄迴圈內變數 xy 的位移與累加變化,並依據參數 n 的奇偶性判定最終回傳值。 【詳解】 已知函式 fun(n) 內之初始變數狀態為:x = 0, y = 1

小題 (一)

假設 y 的值為 0 情況下,執行以下函數,請問輸出結果為何?(8 分)
def F(y):
print(y)
if(y < 2):
F(y + 1)
else:
print(y)
print(y)

思路引導 VIP

看到遞迴(Recursion)考題,首先聯想「系統堆疊(System Stack)」的後進先出(LIFO)特性。解題時務必逐層展開函數呼叫,並精確標記「遞迴呼叫前」、「終止條件(Base Case)」與「遞迴返回後(回溯)」的每一行輸出,切忌心算跳步。

🤖
AI 詳解
AI 專屬家教

【解題思路】運用堆疊(Stack)概念與程式追蹤(Code Tracing)方法,逐步拆解遞迴呼叫(Recursive Call)進入與回溯的執行順序。 【詳解】 已知:初始呼叫條件為 F(0)

🏷️ 相關主題

資料結構與演算法基礎
查看更多「[電子科學組] 計算機概論」的主題分類考古題