所以我有一个递归问题。
编写一个程序,预测一群生物的大小。该计划应询问有机体的起始数量,它们的平均每日人口增长率(百分比)以及它们将增加的天数。 例如,人口可能从两种生物开始,平均每日增加50%,并允许繁殖七天。该程序应使用循环显示每天的人口规模。 输入验证:
我们必须编写一个displayPopulation
方法,该方法将显示每天的人口规模。然后,我们必须编写递归方法来计算大小,然后我们有主要的输入验证。
现在,我有main和递归方法。我无法弄清楚的是如何使循环显示每天的大小? 以下是我的递归方法:
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);
}
我知道这会给我一整天的大小。我不知道如何存储每个值并使它以不同的方法循环打印。我真的迷路了。我需要一些帮助,我会很感激。
答案 0 :(得分:1)
在任何for或while循环中编写一个方法,并调用此方法传递方法所期望的值。并打印结果。
注意 - 我不是在写代码,因为你应该这样做。首先你尝试编写代码,然后如果你得到任何输出,那么我们可以检查你的代码并尝试纠正它。 / p>
答案 1 :(得分: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);
}
}
答案 2 :(得分: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);
}
}
}
答案 3 :(得分: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);
}
}
这应该可以解决您的问题。 天是总天数
答案 4 :(得分:-1)
您当前的程序会在指定日期返回生物体。如果你想要1到n天的生物体,那么你可以使用如下的for循环:
double[] organismsArr = new double[days];
for(int i=1;i<=days;i++)
organisms[i-1] = showPopulation(i, days, organisms + organisms*(dailyIncrease/100), dailyIncrease);