JavaScript的递归的问题?

 function a(n){

if(n>0){

return a(n-1)+n;

}

return 0;

  }

  var num=a(5);

  console.log(num);

我想知道每一步是如何运行的,以及为什么为什么要return 0以及return a(n-1)+n;

二露
浏览 1255回答 1
1回答

风筝_0010

    这个用if语句规定了传入的n不能小于1,如果小于1就直接返回0。    如果传入n的是大于1的值,那就return a(n-1)+n;    这个return的是a(n-1) + n的值,所以相当于把n-1当参数传给a再执行一次,并把执行的结果和n相加,如果n-1还是大于0,那就return a(n-2) + (n-1),这个时候还会把n-2当参数传给a执行一次,并把执行的结果和n-1相加,就这样一直递归,直到n小于1的时候不满足这个if的条件,会返回0,从函数角度来看就是:f(n) = f(n-1) + n; f(n-1) = f(n-2) + n-1; ...... f(1) = f(0) + 1;    所以这样看就是:f(n) = f(0) + 1 + 2 + 3 + 4...... + n; f(0) = 0;    你这个里面可以看做f(5) = 0+1+2+3+4+5 = 15;

慕瓜9220888

NOQIHCLREDRJRJZMEBEPHMICPYIJQSJUKLRLKCUWXXRDPTKZBJGCTZVCUTFVOKAUQGEKJCPJOZREETWNWWXPILVIBOGLJUZVPLIUFPEQTSPZRAFRGCVYLIGGRGTJWPZQBXANNGQRJVLNAJCSLCAIPISVBOWPUVCZJADSNIDATWGCTVXMFBHEJUCPRRADGOLNFLNQQGYPRJXADWNMQPQMFVRRKPKCXWIVPQBMLNNTZKFGYXPFLPIEOKIUNGWTUUWVIOSZZOMLUNXEVVZTMOCSLVRMDFXSFIIOUYCLMWJZPOWRTPRLYJQRJLNWQJCZXSDQDMFVGODVGMPJVRPRAITMZSTACAGZZMNCFUWZMWDEBCRCEBASMXOAZXKNNPQHZOKKDGFGXZRJMCPZYSRPRUNDJXYQVICFVBVDIXPSBROMTVDCFYLLEVXCOXQGDFWOSXQDTZFXSXZSNTQLCOMEMJSCZAPAPMFNAEIHFXAKDTCDVKWCZLVCZDIKNTCJTXJRILYOUAEMSKLHHELWVKPVLTGFZRGYYEUBUFEGVHAUKQUCYJJAKXIRGEGZZGPSTBACIVYHSWYJILUUXJTSKPJQMWQKFXJKXHTHLASHUXKDVVKMHKXAARWXGGTCFFXOGPRRAGAVEQFAADAJSASAPSBBJXUAFNNWPCQYZBGAUEBLJFACFLRBYSRBNDCPCBTVNLYRKKDRGQPCOOLCAJONEPAUIBDLUADMTRIDPEXXJEALTVUNQAWZAJRBUDXTICHQAQTMVSKPOPRXAUPGFGYYVLHVPEWOBMPJNODOQWZWFGGIRXQQQMOMNWYBXGTNMEUWTKMZVCUJUOPSISTYGSROOUWDZUZZFLUULNSETGJTTUDFKNDUBTUZRCWMSSYZOJOBRPJQUZLJMPPLLCYVDWFICMUSXTJMPVVWJLKGGTTWXZECFILTCZHWYRKUUUIDSUNGWCRCAMNGWPLCQSKPIRQWCMBDLVOIRNOWVKEBRRFQJYGXXHNLVOWQJCPFYGOAPRYWJEWODVURFOWHTVJTQJGGKZBTCCFVRVQVUQNQMOSBZVUKBBUVAKMVLOBWHJEHISLHPKIXSSYFNCXPUGZFILEFDPKHHXWJTCEJWIIBFXQBQTMMJAHQBAGCWMTOMIGGJGFDFTVHDFVVSKMRMCZCBJAWXZZIFOOFKMECWIIJUJBAJEHQMKLKMPQNDRCOMYOBUMUBNIXGDGCSLDFUNMJPSWYQPXGPMVCOTCOIKKVCEEZFZSVYZEGEZSSOVTWEAZSMFYZOWFTDPZWXFNCPHNXYDRJLLOYCRFXMOXXTJXUGBTEKNQUYXFXRAUKRPLJSLXUASDOXMNANGQYDMRKXQCAYQVHAQMWJSARKURYZPYEDCCJWGWENWVMTDQLAZSROLSKKPEWLLVIBMKWLNGPZSQHMYQWZWPBFQZBKXXVVTVASLYXRYJOGPRHKUDEGOXTDZFSWLXZMSZVPKCHJSLMJEZXZEEXGDBSOWFHBUEGHFXKHHKTZOMIOKUQJSCYJYBKEQLCXJBUDWYIJRTOJTFPWTLAZNXKTXOYXPSFFYGQPOZCWCIBIXJOBNKASWYHMCIFOSMYTYIIBEQHQBGDJMSBMACRONAUIZEQIRXGA
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript