版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
思路:
n的阶乘即n!=n(n-1)(n-2)……2*1,只要实现n(n-1)然后进行循环或者递归即可
源程序:
递归:
#include<stdio.h>
#include<windows.h>
int Fac(int n)
{
if (n == 0 || n == 1){
return 1;
}
return n*Fac(n - 1);
}
void main()
{
int n;
printf("请输入您想计算阶乘的数> ");
scanf_s("%d", &n);
int result = Fac(n);
printf("%d的阶乘是> %d\n", n, result);
system("pause");
}
非递归(迭代):
#include<stdio.h>
#include<windows.h>
int Fac(int n)
{
int result = 1;
if (n == 0 || n == 1){
return 1;
}
else{
while (n > 1){
result *= n;
n--;
}
}
return result;
}
void main()
{
int n;
printf("请输入您想计算阶乘的数> ");
scanf_s("%d", &n);
int result = Fac(n);
printf("%d的阶乘是> %d\n", n, result);
system("pause");
}
运行结果: