java遞歸調用 return的問題

最近比較閒,寫了個遞歸調用獲取最大公約數,剛開始寫錯了,但一直不明白錯在哪,錯誤代碼以下:spa

public class Demo {
    public static void main(String[] args) {
        int gcd = gcd(5, 15);
        System.out.println(gcd);
    }

    private static int gcd(int a, int b) {
        if (b != 0) {
            int i = a % b;
            a = b;
            b = i;

            gcd(a, b);
        }
        return a;
    }
}

  剛開始一直想不明白爲何當b!=0的時候 不直接return a的值 而是往gcd方法裏走,直到a等於傳入的值時才返回debug

後來就寫了2個方法來debugcode

找到緣由後 修改代碼以下:blog

public class Demo {
    public static void main(String[] args) {
        int gcd = gcd(4, 10);
        System.out.println(gcd);
    }

    private static int gcd(int a, int b) {
        if (b != 0) {
            int i = a % b;
            a = b;
            b = i;

            return gcd(a, b);
        }
        return a;
    }

}
相關文章
相關標籤/搜索