2016-06-01 12 views
0

Ich habe ein ProgrammStar-Muster drucken ohne Rekursion mit nur einer einzigen Schleife?

public class StarPattern2 { 

    public static void main(String args[]) { 
     printStar("*", 1, 5); 
    } 

    public static void printStar(String s, int i, int a) { 
     if (a == 0) 
      return; 
     for (int j = 0; j < i; j++) { 
      System.out.print(s); 
     } 
     System.out.println(); 
     a--; 
     i++; 
     printStar("*", i, a); 
    } 

} 

das Muster als

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

zu drucken, aber es wird mit einem eine Schleife ich möchte nicht jede Schleife nur mit Rekursion, also verwenden ich das Muster drucken möchten .

+1

Haben Sie eine einzelne Schleife zu drucken möchten das Muster aus oder willst du es durch Rekursion ausdrucken? Weil der Titel sich von deinem letzten Satz unterscheidet, ist es mir unklar. – hamena314

+0

Ich möchte eigentlich eine Iteration..Es kann entweder mit einer Schleife oder mit Rekursion ohne Verwendung von Schleife sein. – Abhishek

+0

Ich denke, die Variable "i" hat bei dieser Methode keine Verwendung. Es sollte die for-Schleife stoppen, aber da 'i' und' j' mit der gleichen Geschwindigkeit wachsen, stoppt der 'if (a == 0) ... return' Teil die Schleife, nicht das' i'. Daher benötigen Sie nur das "a", das der Anzahl der Zeilen entspricht. – hamena314

Antwort

0

Sie tun vielleicht so:

public class App { 

    public static void main(String[] args) { 
     App app = new App(); 
     app.printTriangle(5); 
    } 

    public String printTriangle(int count) { 
     if (count <= 0) return ""; 
     String p = printTriangle(count - 1); 
     p = p + "*"; 
     System.out.println(p); 
     return p; 
    } 

} 

// Result 
// * 
// ** 
// *** 
// **** 
// ***** 
+0

http://StackOverflow.com/a/2717254/1368690 ... diese Lösung könnte korrekt sein, obwohl ich nicht sicher bin, was die Variablen "i" und "a" für die OPs sind. – hamena314

+0

sollte es ohne String-Verkettung sein. – Abhishek

1

die Rekursion zu entfernen, ersetzen Printstar mit:

public static void printStar(String s, int i, int a) 
{ 
    for(;a>0;a--) 
    { 
    for(int j=0;j<i;j++) 
    { 
     System.out.print(s); 
    } 
    System.out.println(); 

    i++; 
    } 
} 

Für die veränderte Anforderung entweder Rekursion, OR-Schleife:

public static void printStar(String s, int i, int a) 
{ 
    if(a == 0) return; 

    System.out.println(s); 

    printStar(s+"*", i, a-1); 
} 

Beachten Sie, dass die i-Variable nicht mehr benötigt wird.

0

Wenn Sie dies durch die Schleife tun wollen, dann könnte das sein, was Sie wollen:

public static void printStar(String s, int lines) { 
    for (int i = 0; i < lines; i++) { 
    for (int j = 0; j <= i; j++) { 
     System.out.print(s); 
    } 
    System.out.println(); 
    } 
} 

oder alternativ mit nur einer Schleife:

public static void printStar(String s, int lines) { 
    String out = ""; 
    for (int i = 0; i < lines; i++) { 
    out += s; 
    System.out.println(out); 
    } 
} 
Verwandte Themen