public static int divisor(int m, int n) {
if (m == 0 || n == 0) {
return m+n;
} else {
return divisor(n, m%n);
}
}
它为我提供了 amazon.interviewstreet.com 中某些输入的错误答案(我不知道是哪个,因为他们没有透露用于测试用例的输入)
为什么这个实现总是给我带来 stackoverflow(同样不知道哪些输入)
public static int divisor(int m, int n) {
if(m == 0 || n == 0) {
return m+n;
} else if (m > n) {
return divisor(n, m%n);
} else {
return divisor(m, n%m);
}
}
请让我知道我错过了什么。我是编程新手,而且还是个初学者。
最佳答案
我认为第一个是编程竞赛的代码。如果是这样,请小心您的数据类型。可能“int”不足以容纳输入。尝试用“长”来代替。 (只有当你的算法正确时这才有效。)
关于java - gcd 的这种实现是否正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17602322/