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