課程
/后端開發
/C
/C語言入門
如果n=5,在方法里result = factorial(n-1)*n; 實現的應該是4*5,為什么還會1*2*3*4*5呢???
新手這里面沒有循序,所以想不明白,請大神指點一下?。。。。?/p>
2016-06-18
源自:C語言入門 5-7
正在回答
”當碰到一個條件的時候都會再重復的從頭說起“,理解這句話就行了,程序執行到“result=factorial(n-1)*n時,遇到了factorial(n-1),所以程序要從頭開始執行,此時n=n-1;這就完成了循環
go_bacK_love 提問者
factorial()是個遞歸函數,當執行result = factorial(n-1)*n;時,實現的并不是4*5,因為factorial(n-1)會繼續執行函數factorial()。簡單來說就是函數里面套函數,直到滿足跳出條件(本例中,main函數中n=5,所以它的跳出條件就是n==1),某種意義上也是一種循環吧
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
舉報
C語言入門視頻教程,帶你進入編程世界的必修課-C語言
2 回答階乘的實現
2 回答那個階乘的計算
2 回答例題中為什么n的值沒有變,卻能計算階乘呢。
2 回答為什么我這個代碼計算階乘不行呢
2 回答我想把代碼改為輸入n,求n的階乘
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-07-06
”當碰到一個條件的時候都會再重復的從頭說起“,理解這句話就行了,程序執行到“result=factorial(n-1)*n時,遇到了factorial(n-1),所以程序要從頭開始執行,此時n=n-1;這就完成了循環
2016-06-19
factorial()是個遞歸函數,當執行result = factorial(n-1)*n;時,實現的并不是4*5,因為factorial(n-1)會繼續執行函數factorial()。簡單來說就是函數里面套函數,直到滿足跳出條件(本例中,main函數中n=5,所以它的跳出條件就是n==1),某種意義上也是一種循環吧
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