使用递归在Java中打印素数

Far*_*eaz 2 java recursion primes

我在C中编写了一个类似的函数,并且能够实现与java不同的结果.下面是代码,它检查数字是否是递归的素数.汇编说,我错过了一份退货声明.如果素数是x,则要检查的数字.变量i是除数.(即)x/2,(x/2)-1,... 0.

public int primes(int x, int i)
{
    if(i==0)
        return 1;
    if(x%i==0)
        return 0;
    else
        primes(x, i-1);
}
Run Code Online (Sandbox Code Playgroud)

如果我必须打印前1000个素数,这段代码的复杂性是多少.

rge*_*man 6

在这种情况下:

else
    primes(x, i-1);
Run Code Online (Sandbox Code Playgroud)

你没有回来任何东西.但是,编译器必须确保在所有情况下都返回一些内容.只需返回递归方法调用返回的内容:

else
    return primes(x, i-1);
Run Code Online (Sandbox Code Playgroud)

此外,修改第一个案例的条件,i == 1使其1正确返回素数.