課程
/后端開發(fā)
/C
/C語言入門
例題中為什么n的值沒有變,卻能計算階乘呢。
2016-04-10
源自:C語言入門 5-7
正在回答
long factorial(int n){
long result;
if(n==0 || n==1){
result = 1;
}else{
result = factorial(n-1) * n; ?// 遞歸調用
}
return result;
求 5!,即調用factorial(5)。當進入factorial函數(shù)體后,由于 n=5,不等于0或1,所以執(zhí)行result = factorial(n-1) * n;,即result = factorial(5-1) * 5;,接下來也就是調用factorial(4)。這是第一次遞歸。進行四次遞歸調用后,實參的值為 1,也就是調用factorial(1)。這時遞歸就結束了,開始逐層返回。factorial(1) 的值為 1,factorial(2) 的值為 1*2=2,factorial(3) 的值為 2*3=6,factorial(4) 的值為 6*4=24,最后返回值 factorial(5) 為 24*5=120。
希望能幫到你
慕先生6658929 提問者
非常感激,這里解決了我的一大部分疑惑。
舉報
C語言入門視頻教程,帶你進入編程世界的必修課-C語言
3 回答計算n的階乘可以使用以下代碼,沒有循環(huán)怎么實現(xiàn)階乘的呢?
3 回答為什么沒有給n賦值卻可以從n=10開始計算?
2 回答那個階乘的計算
2 回答為什么我這個代碼計算階乘不行呢
2 回答求助,關于例題里n的階乘
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關注慕課網(wǎng)微信公眾號
2016-04-10
long factorial(int n){
long result;
if(n==0 || n==1){
result = 1;
}else{
result = factorial(n-1) * n; ?// 遞歸調用
}
return result;
}
求 5!,即調用factorial(5)。當進入factorial函數(shù)體后,由于 n=5,不等于0或1,所以執(zhí)行result = factorial(n-1) * n;,即result = factorial(5-1) * 5;,接下來也就是調用factorial(4)。這是第一次遞歸。
進行四次遞歸調用后,實參的值為 1,也就是調用factorial(1)。這時遞歸就結束了,開始逐層返回。factorial(1) 的值為 1,factorial(2) 的值為 1*2=2,factorial(3) 的值為 2*3=6,factorial(4) 的值為 6*4=24,最后返回值 factorial(5) 為 24*5=120。
希望能幫到你
2016-07-06
非常感激,這里解決了我的一大部分疑惑。