我试图实现一个递归函数来计算两个数字的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;
}
答案 0 :(得分:2)
如果使用递归,则不需要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)
是一个无限循环,如果它到达。