后,我对用这种方法计算最近的素数这个的C代码:Ç - 回报递归
int countPrime(int number) {
int dest=number;
int i;
int p; /*p=0 - not prime number*/
if (dest%2 != 0){
int odm=(int)sqrt(dest);
p=1; //pressume prime number
for(i=3;i<=odm;i++){
if((dest/i)*i == dest){
p=0;
dest=dest++;
countPrime(dest);
}
}
}else{
if (dest == 2){
p=1;
dest=2;
return dest;
}else{
p=0;
dest=dest++;
countPrime(dest);
}
}
return dest;
}
它看起来像这种方法算错,但是当我使用递归(我称之为内同样的方法该方法),我有回报问题。显然,首先会从recused方法返回,然后由方法countPrime的第一次运行覆盖。有谁知道,如何解决它?第一次运行不会停止,我只能得到真正的递归结果吗?
感谢
很肯定你需要重新考虑你的算法。你也可以解释一下“计数最接近的素数”是什么意思? – DTing 2011-03-12 11:52:30