最近比較閒,寫了個遞歸調用獲取最大公約數,剛開始寫錯了,但一直不明白錯在哪,錯誤代碼以下: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; } }