编程实现计算n!,也就是n*(n-1)*(n-2)*....*1,可以通过递归函数来实现,具体实现方法:
#include <stdio.h>
int Func(int n)
{
if(n < 2)
return 1;
else
return n*Func(n-1);
}
void main()
{
int n =0,m=0;
printf("请输入一个正整数:")
scanf("%d",&n);
m=Func(n);
printf("%d!=%d\n",n,m);
}
在以上程序代码中,Func()为递归函数,主函数main()中接收键盘输入整数值后,调用Func()递归函数,首层m=n*(n-1)!,继续递归调用,m=n*(n-1)(n-2)!,这样逐层递归,直到计算出N!。
程序输出结果如下:
扩展资料:
所谓n的阶乘就是从1到n的乘积,所以除了递归法来实现以外,其实我们也可以通过一个for循环,从1到n依次求积同样可以达到计算n!的目地。
具体实现代码如下:
#include <stdio.h>
int main() {
int n,i,s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)//for循环求累积
s=s*i;
printf("%d\n",s);
return 0;
}
/*
运行结果:(例如求5的阶乘)
5
120
*/
#include <stdio.h> //定义头文件
int main( ) //声明主函数
{
int n,i=1,j=1; //设定数据类型
printf("input n: "); //输入一个正整数
scanf("%d", &n); //输入
while (i<=n) //小于n
{
j=j*i; //求阶乘
i++; //累加
}
printf("%d!=%d\n",n,j); //输出j
return 0; //返回主函数值
}
扩展资料:
其他方法得到n的阶乘:
#include <stdio.h>
int prime(int x);
void main( )
{
int m,n;
printf("Please input numbers: ");
scanf("%d",&m);
n=prime(m);
printf("%d! 的阶乘是: %d\n", m,n);
}
int prime(int x)
{
int s;
if(x>0)
{
s=prime(x-1)*x;
}
else{
return 1;
}
return s;
本回答被网友采纳