2013-09-26 41 views
0

所以我有一個遞歸問題。遞歸和循環的混合

編寫一個程序,可以預測有機體羣體的大小。該計劃應詢問有機體的起始數量,它們的平均每日人口增長率(以百分比表示)以及它們將繁殖的天數。例如,人口可能以兩種有機體開始,平均每天增加50%,並且可以繁殖七天。程序應該使用循環來顯示每天人口的大小。 輸入驗證:

  • 不接受小於2的數字作爲總人口的起始大小。
  • 不接受每日平均人口增加的負數。
  • 不要接受一個小於1的乘數乘以的天數。
  • 確保您的程序使用遞歸方法而不是循環來計算生物體的數量。
  • 請在任何正在完成的方法開始時記錄事先和事後條件。如果不存在,則爲每個都不指定。

我們必須編寫一個displayPopulation方法,它將顯示每一天的人口規模。然後,我們必須編寫遞歸方法來計算大小,然後我們將主要用於輸入驗證。

現在,我有主要和遞歸方法。我無法弄清的是如何讓循環顯示每一天的大小? 以下是我的遞歸方法:

private static double showPopulation(int dayNum, int days, double organisms, double dailyIncrease){ 

    if(dayNum==days) 
     return organisms; 
    else 

     return showPopulation(dayNum+1, days, organisms + organisms*(dailyIncrease/100), dailyIncrease); 
} 

我知道這會給我的所有天相結合的大小。我不知道如何存儲每個值,並以不同的方式循環打印。我真的很迷茫。我需要一些幫助,我將不勝感激。

+1

您是否嘗試過displayPopulation?如果不是,你會如何口頭解決?這有時幫助我確定一個工作算法。 – Meesh

+0

'@Rabia Khan'如果您發現任何Ans。幫助完整比您可以標記爲已接受。 – HybrisFreelance

回答

0
private static double showPopulation(int dayNum, int days, double organisms, double dailyIncrease){   
    if(dayNum==days) 
     return organisms; 
    else{ 
     //put your print statement here population in `days` is `organisms` 
     return showPopulation(dayNum+1, days, organisms + organisms*(dailyIncrease/100),   dailyIncrease); 
    } 

} 
-1

您當前的程序返回在某一天的有機體。如果你想從1生物體對N天,那麼你可以使用用於如下循環:

double[] organismsArr = new double[days]; 
for(int i=1;i<=days;i++) 
organisms[i-1] = showPopulation(i, days, organisms + organisms*(dailyIncrease/100), dailyIncrease); 
1

寫內部的任何一個方法或while循環和調用此方法路過方法所需的值。並打印結果。

注 - 我沒有編寫代碼,因爲這應該由你來完成。首先,你嘗試編寫代碼,然後如果你得到任何輸出,那麼我們可以檢查你的代碼,並嘗試糾正它。

0
private static double showPopulation(int dayNum, int days, double organisms, double dailyIncrease) 
{ 
    if(dayNum==days) 
      return organisms; 
     else 
    { 
     System.out.println("Population for day"+(dayNum+1)+" is "+(organisms+organisms*(dailyIncrease/100))); 
     return showPopulation(dayNum+1, days, organisms + organisms*(dailyIncrease/100), dailyIncrease); 
    } 

    } 
} 
0
private static double PrintPopulation(int numDays, int days, 
     double organism, double increase) { 
    if (numDays == days) 
     return organism; 
    else { 
     double recentPopulation = organism + (organism * increase/100); 
     System.out.println("Population for day:" + numDays + " is: " 
       + recentPopulation); 
     return PrintPopulation(numDays + 1, days, recentPopulation, 
       increase); 
    } 

} 

這應該解決您的問題。 天是總天數