递归和循环的混合

时间:2013-09-26 05:38:01

标签: java loops recursion

所以我有一个递归问题。

编写一个程序,预测一群生物的大小。该计划应询问有机体的起始数量,它们的平均每日人口增长率(百分比)以及它们将增加的天数。 例如,人口可能从两种生物开始,平均每日增加50%,并允许繁殖七天。该程序应使用循环显示每天的人口规模。 输入验证:

  • 不接受人口起始人数小于2的数字。
  • 不接受平均每日人口增长的负数。
  • 不要接受小于1的数字。它们将成倍增加。
  • 确保您的程序使用递归方法而不是循环来计算生物数量。
  • 请在您完成的任何方法的开头记录前后条件。如果不存在则为每个都声明为无。

我们必须编写一个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);
}

我知道这会给我一整天的大小。我不知道如何存储每个值并使它以不同的方法循环打印。我真的迷路了。我需要一些帮助,我会很感激。

5 个答案:

答案 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);