目录
1.方法一
采用非递归的方法
n!=1*2*3*...*n; 采用for就能解决这个问题
//非递归
#include <stdio.h>
int main()
{
int i = 0;
int n = 0;
int sum = 1;//sum初始化为1,不能是0
scanf("%d", &n);
for (i = 1;i <= n;i++)
{
sum = sum * i;
}
printf("%d!=%d", n, sum);
return 0;
}
2.方法二
采用递归的方法
文字解释:
//递归
//n!=1*2*3*...*n
//get(1*2*3*...(n-1)) * n
//get(1*2*3*...(n-2)) *(n-1)* n
//...
//get(1*2) 3* ... *(n-2) *(n-1)* n
//1*2...*(n-1)*n
图片解释:
例如: 求5的阶乘
完整的代码图:
解析图:
#include <stdio.h>
int get(int n)
{
if(n>1)
{
return n * get(n - 1);
}
else if(n == 1)
{
return 1;
}
}
int main()
{
//int n = 0, sum = 0;
printf("请输入一个数:");
scanf("%d", &n);
sum = get(n);
printf("%d!=%d", n, sum);
return 0;
}