我有这种奇怪的错误。
我正在尝试使用 BigInteger 类实现基本的欧几里得算法,如图所示。当我运行它时,它会抛出 StackoverFlowError,而如果我调试它,它会正确运行并给我正确的答案。
我真的不明白调试和正常运行期间的区别。
static BigInteger gcd(BigInteger a, BigInteger b) {
if (a.equals(BigInteger.ZERO)) {
return b;
} else if (b.equals(BigInteger.ZERO)) {
return a;
}
BigInteger max = a.max(b);
BigInteger min = a.min(b);
return gcd(max.subtract(min), min);
}