後,我對用這種方法計算最近的素數這個的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