2017-07-28 8 views
0

誰もこのコードが1から10をどのように印刷するか説明できますか?誰もこのコードが1から10をどのように印刷するか説明できますか?

class demo 
{ 

    public static void main(String[] args) 
    { 
     display(10);  
    } 
    private static void display(int n) 
    { 
     if (n > 1) 
     { 
      display(n - 1); 
     } 
     System.out.println(n); 
    } 
} 
+6

紙に印刷してみます(2〜3のような小さな番号から始めてください)。あなたはよく理解するでしょう。 – litelite

+0

私は1を印刷するまでしか理解できません。その後、実行の仕方がはっきりしません。 –

+1

コードを1行ずつ読みます。紙に「n」の値を記録しておきます。または、デバッガでコードをステップバイステップで実行し、変数を調べることができます。 – litelite

答えて

0

だからmainメソッドは、表示方法を実行し、次に、10の値を渡し、値は、それが(それは、1)よりも大きいかどうかを確認するためにチェックされます。次。この場合はn-1の値で表示方法が再び呼び出されます。最後に、10が印刷されます。

9は同じサイクルを経ます。 9が1より大きく、n-1の値で表示が呼び出されます。これは8になります。9が表示され、8が表示方法を実行します。これは値が1になるまで続き、この場合1が1より大きくなく、1が出力されてプログラムが終了します。

これは、詳細を調べたい場合は再帰的メソッドと呼ばれます。

1

これは表示方法の再帰呼び出しです。ここでは、displayメソッドに渡される引数の値がスタックに格納されます。 if条件が失敗すると、スタックからポップされ、 "System.out.println(n)"行で印刷された場合はnの値が返されます。 つまり、数値を渡すことによって呼び出されるたびに表示メソッドが呼び出されるたびに、その数値はスタックに格納され、コードが再帰呼び出しから外れるとスタックからその数値が使用されます。

ドライランを実行すると、displayメソッドに値1が渡されたときに、if条件が失敗し、次の行が値1を出力した後、スタックに入っていた2が出力され、これは最初に渡された値です。

+0

Tadah! :)素敵な答えShubham! –

+0

@Kanstantsin thanks bro :) –

関連する問題