問(wèn)題多多求解答
2016-07-13 20:11:41
<script type="text/javascript"> //1*2*3*4*。。。n = n! //n! = (n-1)*n var a = 3; function fun(n){ if(n == 1) return 1; else{ var b = fun(n-1);//n-1的階乘 return b*n; //return n*fun(n-1) } } var s = fun(a); </script>
2 回答

上頭
TA貢獻(xiàn)7條經(jīng)驗(yàn) 獲得超5個(gè)贊
兄弟你這個(gè)代碼寫起來(lái)有點(diǎn)不怎么好,我給個(gè)簡(jiǎn)單明了的例子代碼給你,希望對(duì)你有幫助。
????function?sum(num)?{ ???????if(num?>?1){ ??????????return?num?*?arguments.callee(num?-?1);??//??arguments.callee指向正在執(zhí)行的函數(shù) ???????}?else?{ ??????????return?1;??//?當(dāng)參數(shù)的值為1時(shí),函數(shù)返回1 ???????} ????} ????console.log(sum(5))???//??輸出120 ????console.log(sum(10))??//??輸出3628800??已用計(jì)算機(jī)計(jì)算無(wú)誤
?看不懂的地方百度隨便都可以了解到,希望可以幫到你。

super_mb
TA貢獻(xiàn)101條經(jīng)驗(yàn) 獲得超107個(gè)贊
就是這么乘的:調(diào)用fun(3),得到3*fun(2),于是接著調(diào)用fun(2),得到2*fun(1),接著調(diào)用fun(1),fun(1)返回1,所以不再調(diào)用,而是沿著剛剛調(diào)用的路徑返回,也就是:調(diào)用fun(1)得到1,返回上一級(jí)2*fun(1),而fun(1)返回1,所以為2*1=2,即第二步調(diào)用的fun(2)返回的值是2,所以回到3*fun(2),得到3*2=6,接著返回到fun(3)的調(diào)用,即返回6給s
添加回答
舉報(bào)
0/150
提交
取消