我正在寫一個數是素數,則返回true的功能,否則爲假的Java:找出一個數是素數遞歸
這裏是我當前的代碼:
public static boolean checkPrime(int n, int currDivisor){
if(n < 2){
return true;
}
if(currDivisor == (n/2)){
return true;
}
else if(n % currDivisor == 0){
return false;
}
else{
return checkPrime(n, currDivisor + 1);
}
}
public static void main(String[] args){
System.out.println(checkPrime(23352, 2));
}
它的工作原理對於大量的測試用例,除了像「1000000007」這樣的數字,我得到的內存不足錯誤。我怎樣才能調整這個代碼來提高空間效率?
對於初學者很好,不要使用遞歸函數 –
根本問題是遞歸不是正確的方法。原始性測試不是一個遞歸問題,對於大數量,您總是會很快超出可用存儲空間。我建議你在網上做一些關於「素質測試」主題的研究。 –
在決定是否使用遞歸函數時,您是否遵循經驗法則?出於某種原因,我很確定這是一個遞歸問題。 –