2016-12-13 1 views
-4

Ich verstehe nicht die Ausgabe dieser Rekursion. Kann mir bitte jemand helfen? (Flussdiagramm wird mir helfen, auf jeden Fall zu verstehen, ..)Wie funktioniert dieser rekursive Code?

public class Stars { 
public static void printNChars (int n, char c) { 
for (int j=0; j<n; j++) { 
System.out.print(c); 
} 
} 
public static void printNStars (int n) { 
printNChars (n, '*'); 
System.out.println(); 
} 
public static void triangle(int n) { 
if (n==1) { 
printNStars(1); 
} 
else {triangle (n-1);  
printNStars(n);  
}  
} 
public static void main (String [] args) { 
triangle(5); 
} 
} 

public static void main (String [] args) {  
triangle(5);   
} 
} 

/*
* *
* * *
* * * *
* * * * *

+4

das Bild mit dem Code ersetzen selbst – xenteros

Antwort

0

Es ist im folgenden Werk übrigens:

triangle(n): 
    triangle(n-1) 
    printNStars(n) 

die in übersetzt werden kann:

triangle(n) 
    when previous rows are printed 
    print nth row. 

gibt es auch eine Exit-Regel. Wenn n 1 ist, zeichne keine vorherigen Zeilen. Drucken Sie einfach einen Stern.

Die Hinrichtungen werden in der folgenden Reihenfolge:

n = 4: 
triangle(4) 
    triangle(3) 
     triangle(2) 
      triangle(1) 
       printNStars(1) 
       System.out.println() 
      printNStars(2) 
      System.out.println() 
     printNStars(3) 
     System.out.println() 
    printNStars(4) 
    System.out.println()