static boolean isPrime(int num){
int consNum = num; //something like having a non-changing value
if(consNum < 2){
return false;
}
else if( consNum % Math.round(num--/2) == 0 && num > 2)
return false;
}
else{
if(num==1)
return true;
else
return isPrime(num);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个函数来确定是否num是素数.问题,我希望value(consNum)在第一次调用期间保持该值,有没有办法递归执行此操作?
编辑
从:
if( (consNum % (int)(num--/2) + 0.5 == 0 )
Run Code Online (Sandbox Code Playgroud)
至:
if( (consNum % Math.round(num--/2) == 0 && num > 2)
Run Code Online (Sandbox Code Playgroud)
局部变量是特定方法调用的本地变量; 递归方法也不例外.如果您希望将该值传递给调用链,则需要为其创建第二个参数,并将其明确传递:
// Users of your code invoke this method
public static boolean isPrime(int num) {
return isPrime(num, num);
}
// This overload with two parameters is the actual recursive method
private static boolean isPrime(int num, int original) {
if(original%(int)((num--/2)+0.5)==0)
return false;
}
else{
if(num==1)
return true;
else
return isPrime(num, original);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
842 次 |
| 最近记录: |