題組內容

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

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

詳解 (共 10 筆)

邊工作邊唸書
邊工作邊唸書
詳解 #5203301
2021/11/10
int GCD(int A, int B)
{
if( (A % B) == 0)
return B;
else
return GCD(B, A%B);
}
茶茶
茶茶
詳解 #5202489
2021/11/10
int gcd(int x,int y)...
(共 148 字,隱藏中)
前往觀看
bmpss92295
bmpss92295
詳解 #5603599
2022/09/02
使用PYTHON撰寫 提供input

(共 21 字,隱藏中)
前往觀看
我一定會上榜
我一定會上榜
詳解 #5435968
2022/04/28

int GCD(int a, int b){

    while(b != 0) { 

        int r = a % b; 

        a = b; 

        b = r; 

    }

    printf("%d",a);   

}

int main()

{

    int a,b;

    printf("請輸入2個整數");

    scanf("%d %d",&a,&b);

    GCD(a,b);

}


Grace
Grace
詳解 #5930600
2023/09/13

另一種解法用短除法。

int GCD(x, y){
    int i = 1;
    while(true){
        i++;
        if (x%i==0 and y%i == 0){
            return i * GCD(x/i, y/i);
            if [(i^2>=x) or (i^2>=y)
                black;
        }
    }
}

Lin Jin
Lin Jin
詳解 #6119807
2024/06/04
兩種寫法:會差一次呼叫。
665ebce934ca5.jpg665ebd35ef88b.jpg
ㄏㄏㄏ
ㄏㄏㄏ
詳解 #6374038
2025/04/15
用三元運算子 int gcd(int ...
(共 73 字,隱藏中)
前往觀看
hhh
hhh
詳解 #5583515
2022/08/08


(共 1 字,隱藏中)
前往觀看
蔡明勳
蔡明勳
詳解 #5637957
2022/10/17
polar33794
polar33794
詳解 #5977614
2023/12/02
  1. int GCD(int N1, int N2)
  2. {
  3. if(N1>0 && N2>0)
  4. {
  5. if(N1>=N2)
  6. N1=N1%N2;//如果N1大於N2,就使用輾轉相除法,N1除以N2後的餘數,需要保留(商數不需要當作下一次計算的數值),N1原本的數值也用不到了,可以把N1取代為相除後的餘數
  7. else
  8. N2=N2%N1;
  9. ㅤㅤ
  10. if(N1>0&&N2>0)
  11. return GCD(N1,N2);
  12. else if(N1==0)
  13. return N2;
  14. else if(N2==0)
  15. return N1;
  16. }
  17. ㅤㅤ
  18. }