2017-05-16 21 views
1

Javascriptで再帰がどのように機能するか知りたい。私は以下の例をとります:Javascriptの再帰

function abc(n){ 
    document.write(n + "<br>"); 
    if (n < 4){ 
     abc(n+1); 
     document.write(n + "<br>"); 
    } 
} 

私の注意は5行目です。 5日はいつ実行されますか?再帰の前後に5行目が実行されていますか?

ありがとうございました。

+0

http://stackoverflow.com/questions/10638059/javascript-debugging-line-by-line-using-google-chrome – Quentin

+0

再帰の後、2回目の 'document.write'が呼び出されます。 – Shubham

+0

書き込み命令は再帰関数呼び出しの後に置かれるため、再帰呼び出しの後に実行されます; – Eineki

答えて

3

は、それがABER最初完成再帰を実行する

function abc(n){ 
 
    document.write(n + "<br>"); 
 
    if (n < 4){ 
 
     abc(n+1); 
 
     document.write(n + " Foo<br>"); 
 
    } 
 
} 
 

 
abc(1)

+0

@Rushit 4が最初に印刷された後、4のチェックが行われます。 – kennasoft

+0

ALL再帰後または最初の再結合後に実行されますか? – billyhalim25

+0

@ billyhalim25コードスニペットを実行することができます。 1から4までのすべての反復を表示することがわかります。次に、 'foo'で数値を表示します。 – Weedoze

2

再帰後に実行されます。それはDepth-first searchの原則に従います。

levels     comment 
------------- ---------------------------------- 
1 
    2 
     3 
      4 end of recursion calls, max depth 
     3 
    2 
1 

function abc(n){ 
 
    document.write(n + "<br>"); 
 
    if (n < 4){ 
 
     abc(n+1); 
 
     document.write(n + "<br>"); 
 
    } 
 
} 
 

 
abc(0);

1

これは再帰の後に実行されます。再帰は、条件が満たされるまで関数内の関数を呼び出します。あなたのケースでは、関数の "より深い"レベルに入るために、変数nは再帰のために4未満でなければなりません。

ABC(1) - > ABC(2) - > ABC(3)

プログラムが他の行に行くことができる前に、だから3同期関数呼び出しを持つことになります。