簡體   English   中英

遞歸函數來計算最大公約數

[英]Recursive function to calculate greatest common divisor

我正在嘗試實現一個遞歸函數來計算兩個數字的gcd,但是我的代碼無法正常工作,知道什么地方出了問題嗎?

public static int gcd(int a, int b) {
    if (a == b) {
        return a;
    }

    while (a != b) {
        if (a > b) {
            gcd(a - b, b);
        } else if (b > a) {
            gcd(a, b - a);
        }
    }
    return a;
}

如果使用遞歸,則不需要while循環。 做就是了:

public static int gcd(int a, int b) {
    if (a == b) {
        return a;
    }

    if (a > b)
        return gcd(a - b, b);

    return gcd(a, b - a);
}

順便說一句, while (a != b)是一個無限循環(如果達到)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM