1.题目
2.分析
- 非递归
需要用到循环,n个数就是循环n次,每次和之前的乘起来
例如 5的阶乘 就是 5*4 *3 *2 *1
循环1到5 。需要一个变量来接收每次的结果 注意这个地方是乘,所以要从1 开始,sum 也需要是1而不是0
for(i = 1; i<=5; i++)
{
sum =sum * i // 等价于 sum * =i;
}
- 递归
分两种情况,就是小于2 就是本身
大于2 的时候开始是 n*(n-1)的情况了
3. 代码实现
#include<stdio.h>
//求n!
int numMuti(int n)
{
int i = 0;
int sum = 1;
for (i = 1; i <= n; i++)
{
sum *= i;
}
return sum;
}
int numMuti2(int m)
{
if (m > 2)
{
return m * numMuti2(m - 1);
}
else
return m;
}
int main()
{
int num = 0;
scanf("%d", &num);
int ret1 =numMuti(num);
int ret = numMuti2(num);
printf("%d\n", ret);
return 0;
}