一.概念:
一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。
二.求阶乘的方法:
阶乘的计算方法:
任何大于等于1 的自然数n 阶乘表示方法:
n!=1×2×3×…×(n-1)×n 或 n!=n×(n-1)!
注意:0的阶乘为1,即 0!=1。
1! = 1
2! = 2 * 1 = 2
3! = 3 * 2 * 1 = 6
…
n! = n * (n-1) *… * 2 * 1
————————————————
1.第一种:循环
①for循环。
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
int fact = 1;
int i;
for (i = 1; i <= n; i++)
{
fact *= i;
}
printf("%d\n", fact);
return 0;
}
②while循环
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
int fact = 1;
int i = 1;
while (i <= n)
{
fact *= i;
i++;
}
printf("%d\n", fact);
return 0;
}
当然 这样也可以:
#include <stdio.h>
int Fact(int n);
int main() //主函数
{
int n, cnt;
scanf("%d", &n);
cnt = Fact(n);
printf("%d\n", cnt);
return 0;
}
int Fact(int n) //递归函数
{
int res = n;
if (n > 1)
res = res * Fact(n - 1);
return res;
}
三、进阶
为打破上述0<=n<=12限制,特补充进阶内容
第一种:初步进阶版,可以求解 0<=n<=20范围内的阶乘(以for循环实现为例)
改进思路:将原有的int类型改为long long类型,最高可以求解到n为20时候的阶乘值。
除此之外,还有更多的进阶的方法,如有兴趣 请移步到此链接:C语言入门与进阶——求n的阶乘_c语言求n的阶乘-CSDN博客
学习了阶乘之后,我不仅对c语言更加有兴趣,而且发现同一种效果有很多种方法,没有最好的,只有更好的方法。因此我们要多动脑思考,在自己的代码上更加优化,精益求精。