public static int GCD(int a, int b) {
if (b == 0) {
return a;
} else {
int a1 = b;
int b1 = a % b;
GCD(a1, b1);
}
return 1;
}
}
为什么Euclid's Algo的这种实现(在Java中)总是返回1?如何获得正确答案?
答案 0 :(得分:1)
您忘记了退货声明。您进行了递归调用,但未使用该值。
public static int GCD(int a, int b) {
if (b == 0) {
return a;
} else {
int a1 = b;
int b1 = a % b;
// return here
return GCD(a1, b1);
}
return 1;
}
尽管如此,您可以像这样简洁地编写它:
public static int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
或一行:
public static int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
答案 1 :(得分:0)
我认为您只是错过了"Rendering"
,因此您的代码一直运行到最后并返回1。
category