LONGEPASS
數位電子/程式語言/Q58
中等
正確率 -
Q58.

執行下列C 語言程式,其輸出結果為何?數位電子 甲級 程式語言 第 58 題 題目 圖片

數位電子 · 甲級 · 程式語言 · Q58

難易度分析

3 / 5

測試學生對輾轉相除法遞迴流程的掌握,判斷停止條件並辨別最終 GCD。選項皆為不同數值,考核能否正確識別真正的 GCD。

正確答案:③13

③ 13:此為輾轉相除法求最大公因數:`func(247, 286)` → `func(286, 247)` → `func(247, 39)` → `func(39, 13)` → `func(13, 0)` 返回 13,故輸出為 13。

錯誤選項解析

  • ① 3:輾轉相除法(歐幾里得演算法)的遞迴過程不會只執行一次就返回,`func(247, 286)` 會持續遞迴呼叫直到 `num2 == 0`,因此輸出不會是初始的 `num1` 值 247 或 3。
  • ② 11:此遞迴函數計算的是兩數的最大公因數 (GCD),而非兩數之和或其他運算。247 與 286 的 GCD 為 13,而非 11。
  • ④ 39:39 是遞迴過程中 `286 % 247 = 39` 的中間餘數值,並非最終結果。當 `num2` 遞減至 0 時,返回的是最後的 `num1` 即 最大公因數 13。
Learning Tip

"此題考 輾轉相除法(歐幾里得演算法) 的遞迴實作。常考陷阱為混淆中間餘數與最終 GCD 結果。實務上可使用 `#include <stdlib.h>` 的 `gcd()` 函數(C++17 起),但檢定考試常要求手寫遞迴版本。切記:當 `num2 == 0` 時返回的 `num1` 即為兩數的最大公因數。"

學員答題分佈

①30%
②110%
③130%
④390%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目