-4
入力された増加および期間に基づいて、生物群の集団を印刷する必要があります。私は開始量に%の増加を掛ける必要があります.2日目には3日目に%の増加などを掛けます。しかし、これを再帰的に行う方法と、時間順に表示する方法は分かりません。 。私はこのコードを作ったが、正しい式に従わない。コードを修正して正しく印刷するにはどうすればよいですか?適切な年代順に再帰的に印刷する
static void displayPopulation(double start, double increase, int day)
{
if (time == days)
{System.out.println(time + " " + (start * increase * time));}
else if(time == 1)
{System.out.println(time + " " + start); displayPopulation(start, increase, ++time);}
else
{System.out.println(time + " " + (start * increase * time));
displayPopulation(start, increase, time++);
}
}
編集:uはメソッドにする必要はありません場合は
package populationstarter;
import java.util.*;
public class PopulationStarter {
static String Input;
static double starting;
static double increase;
static int days;
static String output;
static int time = 1;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Enter the starting number of organisms: ");
starting = scan.nextDouble();
System.out.println("Enter the % daily increase: ");
increase = scan.nextDouble() * .01 + 1;
System.out.println("Enter the # of days: ");
days= scan.nextInt();
System.out.println("Day Amount\n ------------");
displayPopulation(starting, increase, time);
}
static void displayPopulation(double start, double increase, int day)
{
if (time == days)
{System.out.println(time + " " + (start * increase * time));}
else if(time == 1)
{System.out.println(time + " " + start); displayPopulation(start, increase, ++time);}
else
{System.out.println(time + " " + (start * increase * time)); displayPopulation(start, increase, time++);}
}
}
「時間」とは何ですか? 「日」とは何ですか? 'day'パラメータが使われないのはなぜですか? ---コードの書式を修正してください。それは恐ろしいことだ。私。 'if'ステートメントの内容をインデントし、複数のステートメントを1行にまとめます。 – Andreas
単純な 'for'ループでできることに再帰を使うのはなぜですか?反復回数が多すぎるとStackOverflowErrorが発生し、forループは失敗することなく永遠にループできます。 – Andreas
申し訳ありませんが、私はdisplayPopulation部分に集中したいので、私が含まなかったmainで定義された日です。また、プログラムを私に割り当てた人が再帰を使用する必要があります。 –