第一种:用循环直接算
#include <stdio.h>
int main()
{
int n,i,a=1;
scanf("%d",&n);
for (i = 1; i <=n; i++)
{
a= sum*a;
}
printf("%d\n", a);
}
第二种:创建函数来实现,函数里的计算方法实际还是循环
#include<stdio.h>
int jie(int n) //创建一个jie函数用来求n!
{
int i, b=1;
for (i = 1; i <= n; i++)
{
b *= i;
}
return b;
}
int main()
{
int n = 0;
scanf("%d", &n);
int a = jie(n);
printf("%d\n", a);
}
第三种:用递归的思想来解决;
当输入值n<=1时 函数里返回1;
当输入值n>1时 函数返回n*jie(n-1) 实际上返回的就是n*(n-1)!,只不过这里的(n-1)!用我们所创建的函数jie(n-1)!来表示;如果此时n-1>1表达式还成立,那就继续执行我们的jie函数。 jie(n-1)=(n-1)*jie(n-1-1);
1. 如果n-1-1>1不成立,此时会将1返还给jie(n-1-1)函数, 现在b=n*jie(n-1)=n*(n-1)*jie(n-1-1) 注意(jie(n-1-1)=1),所以b=n*(n-1);
2. 如果n-1-1>1成立,那就继续执行,继续判断,一直到小于等于1;最后返回的b=n*(n-1)*(n-2).......
#include<stdio.h>
int jie(int n)
{
int b = 1;
if (n > 1)
{
b = n*jie(n - 1);
}
return b;
if (n <= 1)
{
return 1;
}
}
int main()
{
int n = 0;
scanf("%d", &n);
int a = jie(n);
printf("%d\n", a);
}