递归打印所有素数

时间:2018-12-08 10:43:51

标签: java recursion

我们可以递归地打印给定数字以下的所有素数吗?例如,如果调用了printPrimes(10),则应打印2、3、5、7。我可以检查单个数字是否为素数,并逐个迭代'n'。但我想知道是否有可能采用纯粹的递归解决方案。

2 个答案:

答案 0 :(得分:1)

发表我的评论之一作为答案: 您可以通过采用一个参数的递归方法来执行此操作,首先发送n并在随后的每个递归调用中将其减少,直到达到1,这是递归的终止条件。这将使您的API更干净

以下是Java中的代码:

public void printPrimesBelow(int n) {
    if(n > 1) {
        if(isPrime(n)) {
            System.out.println(n);
        }
        printPrimesBelow(n-1); // recurse over n-1
    }
}

较小的修改:

如果将递归调用放在if语句上方,则素数打印的顺序将增加。

答案 1 :(得分:0)

因此,您已经有了一个检查单个数字是否为质数的函数?然后确定

public void printNPrimes(int start, int n){
    if (start == n)
        return;
    if (isPrime(start))
        System.out.print(start);

    printNprimes(start + 1 , n );
}

通过printNprimes(0,n)调用此函数; n是您要增加的号码