阿摩線上測驗 登入

申論題資訊

試卷:110年 - 110 經濟部所屬事業機構_新進職員甄試_統計資訊:1.資料庫及資料探勘 2.程式設計#103709
科目:國營事業◆1.資料庫及資料探勘 2.程式設計
年份:110年
排序:0

題組內容

四、下列問題,請用遞迴(Recursive)的方式來撰寫:

申論題內容

(二)請用遞迴方式撰寫一函式 GCD,輸入為 2 個正整數,其傳回為此 2 個正整數之最大公 因數。

詳解 (共 2 筆)

詳解 提供者:邊工作邊唸書
int GCD(int A, int B)
{
if( (A % B) == 0)
return B;
else
return GCD(B, A%B);
}
詳解 提供者:hchungw
def GCD(a, b):
    # 基本情況:當 b 為 0 時,返回 a
    if b == 0:
        return a
    else:
        # 遞迴調用:GCD(b, a % b)
        return GCD(b, a % b)

測試範例
num1 = 48
num2 = 18
result = GCD(num1, num2)
print(f"{num1} 和 {num2} 的最大公因數是: {result}")

解釋

  1. 基本情況

    • b=0b = 0b=0 時,直接返回 aaa 作為最大公因數。
  2. 遞迴調用

    • 使用 return GCD(b, a % b) 進行遞迴調用,這一步相當於將問題規模縮小,逐步逼近基本情況。

測試範例

  • a=48a = 48a=48
  • b=18b = 18b=18
  • 步驟:
    • GCD(48,18)GCD(48, 18)GCD(48,18) 進行遞迴調用 GCD(18,48%18)=GCD(18,12)GCD(18, 48 \% 18) = GCD(18, 12)GCD(18,48%18)=GCD(18,12)
    • GCD(18,12)GCD(18, 12)GCD(18,12) 進行遞迴調用 GCD(12,18%12)=GCD(12,6)GCD(12, 18 \% 12) = GCD(12, 6)GCD(12,18%12)=GCD(12,6)
    • GCD(12,6)GCD(12, 6)GCD(12,6) 進行遞迴調用 GCD(6,12%6)=GCD(6,0)GCD(6, 12 \% 6) = GCD(6, 0)GCD(6,12%6)=GCD(6,0)
    • 因為 b=0b = 0b=0,返回 666

因此,48 和 18 的最大公因數是 6。