1

誰かがこの再帰関数の出力を説明できますか? ありがとうございました!

function test(a) {
    while (a > 0) {
        a -= 1;
        test(a);
        console.log('after first invocation: ' + a);
    }
}

test(3);​

出力:

after first invocation: 0
after first invocation: 1
after first invocation: 0
after first invocation: 2
after first invocation: 0
after first invocation: 1
after first invocation: 0
4

1 に答える 1

2

コードは、あなたが彼に指示したことを 100% 実行します!

loop 1 : 
     value of a is 3, is it bigger then 0? Yes!
     3 - 1 = 2 (why not a-- ...) 
     call function test(2)
     is 2 bigger the 0? Yes!
     2 - 1 = 1 
     call function test(1)
     is 1 bigger the 0? Yes!
     1 - 1 = 0 
     call function test(0)
     is 0 bigger then 0 ? NO!
     console.log(('after first invocation: ' + 0)

すべての出力に対してそれを行う必要はないと思いますが、あなたは要点を理解していると思いますか?

于 2013-01-03T23:16:06.427 に答える