递归并向数组添加元素

时间:2014-07-07 18:18:07

标签: java arrays recursion

我试图在实例变量primes中创建以2开头的前n个素数组。我有两个问题。一个是在countPrimes方法中弄清楚我的基本情况应该发生什么。另一个问题是弄清楚如何在我的makeprimes方法中没有任何循环的情况下将元素或素数添加到我的数组中。如果您有任何建议会很好。例如,如果n为10,则会产生:

[2,3,5,7,11,13,17,19,23,29]

我的代码如下:

private int[] primes = {};

public int[] getPrimes() {
    return primes;
}



public void countPrimes(int count, int n, int found) {
    if(n == found){
        //do nothing?
    }else if (isPrime(count) == true) {
        countPrimes(count + 1, n,found +1); 
    } else {
        countPrimes(count + 1,n,found);
    }
}

public void makePrimes(int n) {
    primes = new int[n];
    if(n>0){
        countPrimes(0,n,0);     
    }
}

1 个答案:

答案 0 :(得分:0)

我会做这样的事情

public int[] makePrimes(int n){
    int[] primes = new int[n];
    return makePrimesHLP(n, primes, 2);

}

public int[] makePrimesHLP(int n, int[] primes, int pos, int numprimes){
    if(numprimes == n)
        return primes;
    if(isPrime(pos)){
        primes[numprimes] = pos;
        return makePrimesHLP(n, primes, ++pos, ++numprimes);
    }
    return makePrimesHLP(n, primes, ++pos, numprimes);
}

这是一个非常基本的功能(它通过并检查每个数字是否为素数),但它应该工作(我的代码中的基本错误可以承受)。您需要确保每次都返回一些内容,否则您无法取得进展。