2013-09-26 39 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); 
    } 

} 

这应该解决您的问题。 天是总天数