2017-07-30 11 views
1

再帰線の後のコードで何が起こるのか正確に尋ねたいですか?再帰行の後のコードはどうなりますか?

は、ここでのサンプルコードです:

public static void method(int index){ 
    --index; 
    if (index < 0) { 
     return; 
    } 


    method(index); 
    System.out.println(index); 

} 

SOUT逆の順序で自分の番号を印刷し、なぜそれが再帰行の後にあるとき、私の質問は:0 1 2 3 4

事前のおかげで。それぞれの前に

+0

あなたの質問に明確 – laish129

+0

まあではない、他の質問の名前にもかかわらず、再帰的なメソッドを介してステッピングの概念は同じです。 –

答えて

0

リーチ-1あなたがスタックを重ねていると我々は最後のものをポップ保つ0からあなたの番号index

まで再帰スタックを呼び出して起動すると、あなたが方法(数1)

を呼び出して印刷しますスタックから:

0 
1 
... 
number-1 
number 
0

アプリケーションはシングルスレッドなので、すべての命令が1つずつ実行されます。

メソッドを呼び出すと、メソッドが完了した後に次の行が呼び出されます。それは次のように

method(4)のあなたの実行は次のとおりです。

method(4) 
method(3) 
method(2) 
method(1) 
method(0) 
method(-1) 

- メソッドの戻りmethod別の時間を呼び出す前に - ここでは、これ以上の再帰呼び出しはありません。それが復帰するので、method(0)の実行に戻ります - print 0が実行されます。その後、我々は戻ってmethod(1)を終える:

print 0 
print 1 
print 2 
print 3 
print 4 
関連する問題