java递归调用 return的问题,
分享于 点击 17466 次 点评:170
java递归调用 return的问题,
最近比较闲,写了个递归调用获取最大公约数,刚开始写错了,但一直不明白错在哪,错误代码如下:
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等于传入的值时才返回
后来就写了2个方法来debug
找到原因后 修改代码如下:
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; } }
相关文章
- 暂无相关文章
用户点评