計(jì)算n的階乘可以使用以下代碼,沒有循環(huán)怎么實(shí)現(xiàn)階乘的呢?
如果n=5,在方法里result = factorial(n-1)*n; 實(shí)現(xiàn)的應(yīng)該是4*5,為什么還會1*2*3*4*5呢???
新手這里面沒有循序,所以想不明白,請大神指點(diǎn)一下?。。。?!
如果n=5,在方法里result = factorial(n-1)*n; 實(shí)現(xiàn)的應(yīng)該是4*5,為什么還會1*2*3*4*5呢???
新手這里面沒有循序,所以想不明白,請大神指點(diǎn)一下?。。。?!
2016-06-18
舉報(bào)
2016-07-06
”當(dāng)碰到一個條件的時候都會再重復(fù)的從頭說起“,理解這句話就行了,程序執(zhí)行到“result=factorial(n-1)*n時,遇到了factorial(n-1),所以程序要從頭開始執(zhí)行,此時n=n-1;這就完成了循環(huán)
2016-06-19
factorial()是個遞歸函數(shù),當(dāng)執(zhí)行result = factorial(n-1)*n;時,實(shí)現(xiàn)的并不是4*5,因?yàn)閒actorial(n-1)會繼續(xù)執(zhí)行函數(shù)factorial()。簡單來說就是函數(shù)里面套函數(shù),直到滿足跳出條件(本例中,main函數(shù)中n=5,所以它的跳出條件就是n==1),某種意義上也是一種循環(huán)吧
2016-06-18
factorial(5)? result=f(4)*5
f(4)? result=f(3)*4
f(3)? result=f(2)*3
f(2)? result=f(1)*2
f(1)? result=1
然后跳出 往回帶? result=1*2*3*4*5
return result