2016-12-13 7 views
-4

私はこの再帰の出力を理解していません。 誰か助けてくれますか?それは次のように動作しますこの再帰コードはどのように機能しますか?

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

は、コード自体で画像を交換 – xenteros

答えて

0

(フローチャートは間違いなく...私が理解するのに役立ちます)方法:

に変換することができ
triangle(n): 
    triangle(n-1) 
    printNStars(n) 

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

終了ルールもあります。 nが1の場合、前の行を描画しないでください。ただ1つの星印を印刷してください。

実行は以下の順序であろう:

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() 
関連する問題