2017-03-24 7 views
-2

このような再帰シェイプを作成するにはどうすればよいですか? これは、M = 3に入った、N = 5 出力は次のようになり、ユーザの例である:私はヒントがあるJavaで再帰シェイプを作成する方法

*** 
**** 
***** 
***** 
**** 
*** 

あなたがループに使用できます1つ1つの形状の行を描きます。 |:しかし、あなたは、問題の「小さい」バージョン


これは私のコードであり、それは完全に間違っているのメソッドを呼び出すために再帰を必要とします

public static void main(String[] args) { 

    Scanner s = new Scanner(System.in); 

    int m = s.nextInt(); 
    int n = s.nextInt(); 

    question1(m,n); 
} 

public static void question1(int m, int n){ 

    int counter = m; 
    if(m < n){ 
     System.out.print("*"); 
     m = m + 1; 
     question1(m,n); 

    } 

    else if(m == n){ 
     System.out.print("*"); 


    } 
} 
+1

何か試しましたか?何が問題ですか? –

+0

まず、何らかの計画を立ててから、あなたのアイデアを実装するコードを書くようにしてください。 – alfasin

+0

@ElliottFrischこれは私のコードです.. –

答えて

2

再帰について読んで、何かしようとしてください。このウェブサイト/本には本当に良い説明があります。

Java Recursion

0

あなたはquestion1でreturn文(int型メートル、int型n)を使用する必要がある、とあなたは、その関数を呼び出す必要があります。これは再帰の例です。

public static long factorial(int n) { 
if (n == 1) return 1; 
return n * factorial(n-1); 
} 
1

これは1つの実装です。私は回帰が最初にあなたの頭を包むのは本当に難しいことがわかります:

public static void main(String... args) { 
    printShape(3, 1); 
} 

// @param numStars The number of stars to print in a row 
// @param inc +1 or -1, representing increasing or decreasing amount of stars 
private static void printShape(final int numStars, final int inc) { 
    if (numStars < 3) 
     return; 
    else if (numStars > 5) 
     printShape(numStars - 1, -1); // Reverse directions 
    else { 
     for (int i = 0; i < numStars; i++) 
      System.out.print("*"); 
     System.out.println(); 
     printShape(numStars + inc, inc); 
    } 
} 
関連する問題