課程
/后端開發
/C
/C語言入門
階乘是啥?那段代碼的運行流程是什么樣的,有大神幫忙解答嗎?我是不是少上了一課?
2023-12-14
源自:C語言入門 5-7
正在回答
階乘是所有小于及等于該數的正整數的積。
階乘在數學課程里面有介紹,階乘用“n!”表示n的階乘。
1的階乘:1!=1*1=1;
2的階乘:2!=2*1=2;
3的階乘:3!=3*2*1=6;
4的階乘:4!=4*3*2*1=24;
5的階乘:5!=5*4*3*2*1=120;
...
n的階乘:n!=n*(n-1)*(n-2)*(n-3)*...*(n-(n-1));
階乘:
比如3的階乘就是:3*2*1=6
6的階乘就是:6*5*4*3*2*1=720
代碼流程:
#include <stdio.h>
/* 定義獲取單詞數量的函數 */
int getWordNumber(int n)
{? ?
? ? if(n == 1)
? ? {
? ? ? ? return 1;? ? //第一天只會1個單詞
? ? }
? ? else{
? ? ? ? return? getWordNumber(n-1)+n;? ? ? //到第天會的單詞數量
}
int main()
{
? ? int num = getWordNumber(10);? ? ?//獲取會了的單詞數量
? ? printf("小明第10天記了:%d個單詞。\n", num);
? ? return 0;
n=10,運行getWordNumber函數,運行return??getWordNumber(n-1)+n;?? 即為return??getWordNumber(10-1)+10;??然后運行getWordNumber(10-1) 即為return??getWordNumber((10-1)-1)+(10-1)即getWordNumber(9-1)+9,然后運行getWordNumber(9-1) 即為return??getWordNumber((9-1)-1)+(9-1)即getWordNumber(8-1)+8,然后運行getWordNumber(8-1) 。。。 直到 return??getWordNumber((2-1)-1)+(2-1)即getWordNumber(1-1)+1,然后運行getWordNumber(1-1) 即為return??getWordNumber(1-1)+1;?? 然后運行getWordNumber(0)=1 綜上代碼運算結果為10+9+8+。。。+2+1
舉報
C語言入門視頻教程,帶你進入編程世界的必修課-C語言
6 回答代碼和標答是一樣的…但還是運行失敗,求大神解答
1 回答為什么我的運行結果是5050,求各位大神解答
6 回答b++不是等于10嗎?為啥是9,求大神解答
1 回答代碼驗證過了,但運行結果是錯的,怎么回事,求大神解答
2 回答這樣怎么也是運行成功呢?求大神解答
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2024-08-23
階乘是所有小于及等于該數的正整數的積。
階乘在數學課程里面有介紹,階乘用“n!”表示n的階乘。
1的階乘:1!=1*1=1;
2的階乘:2!=2*1=2;
3的階乘:3!=3*2*1=6;
4的階乘:4!=4*3*2*1=24;
5的階乘:5!=5*4*3*2*1=120;
...
n的階乘:n!=n*(n-1)*(n-2)*(n-3)*...*(n-(n-1));
2024-06-14
階乘:
比如3的階乘就是:3*2*1=6
6的階乘就是:6*5*4*3*2*1=720
代碼流程:
#include <stdio.h>
/* 定義獲取單詞數量的函數 */
int getWordNumber(int n)
{? ?
? ? if(n == 1)
? ? {
? ? ? ? return 1;? ? //第一天只會1個單詞
? ? }
? ? else{
? ? ? ? return? getWordNumber(n-1)+n;? ? ? //到第天會的單詞數量
? ? }
}
int main()
{
? ? int num = getWordNumber(10);? ? ?//獲取會了的單詞數量
? ? printf("小明第10天記了:%d個單詞。\n", num);
? ? return 0;
}