2017-10-13 16 views
-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++);} 
} 

}

+0

「時間」とは何ですか? 「日」とは何ですか? 'day'パラメータが使われないのはなぜですか? ---コードの書式を修正してください。それは恐ろしいことだ。私。 'if'ステートメントの内容をインデントし、複数のステートメントを1行にまとめます。 – Andreas

+1

単純な 'for'ループでできることに再帰を使うのはなぜですか?反復回数が多すぎるとStackOverflowErrorが発生し、forループは失敗することなく永遠にループできます。 – Andreas

+0

申し訳ありませんが、私はdisplayPopulation部分に集中したいので、私が含まなかったmainで定義された日です。また、プログラムを私に割り当てた人が再帰を使用する必要があります。 –

答えて

0

無効この方法を試してみてください。ここでは完全なコードです!

public static String displayPopulation(double start, double increase, int day){ 
    return displayPopulation(start,increase,day,0); 
} 

private static String displayPopulation(double start, double increase, int days, int day){ 
    if(days==0) return "\n"+day+"\t"+start; 
    return "\n"+ day + "\t" +start + displayPopulation(start*increase, increase, days-1, day+1); 
} 
+1

助けてくれて、ありがとう! –

関連する問題