0
为什么此代码会给我一个stackoverflowerror?我试图使计数素数函数比O(n**2)
更快。Java - 针对主要递归的StackOverflowError
我的代码:
public class TestingJavaCode {
public int countPrimes(int n) {
int counter = 0;
n--;
if (n > -1 && this.isPrime(n)) {
counter++;
}
counter += countPrimes(n);
return counter;
}
public boolean isPrime(int n) {
for (int i = 2; i < n; i++) {
if (n % i == 0)
return false;
}
return true;
}
你递减n,但是什么时候递归停止?目前,递归调用总是被触发 –
只是一个旁注:你可以跳过几乎一半的迭代,因为除了2以外,每个偶数都不能是一个素数 –