如何编程实现计算n!?

如何编程实现计算n!?,第1张

编程实现计算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=1i<=ni++)//for循环求累积

s=s*i

printf("%d\n",s)

return 0

}

/*

运行结果:(例如求5的阶乘)

5

120

*/

1、求n!就是n的阶乘首先打开vc++ 6.0软件,准备一个新的c语言文件,命名为multiply.cpp,然后引入C语言基本库,创建一个main函数:

2、然后在man函数中输旁铅入代码。这里所谓的n的阶乘,就是从 1 开始乘以比前一个数大 1 的数,一直乘到 n,在for循环中不断计算f和n相乘,每轮计算完就n就减1,直到n=1结束计算运陵好。最后打印出计算结果程序就编写完成了:

3、最后编汪族译运行这段程序,在打开的命令行中,输入任意一个数计算结果,可以看到显示出了计算值以上就是用c语言的求n!的方法就是:

#include"iostream.h"

#include"math.h"

#include"stdlib.h"

#include"iomanip.h"

int getn()

{

int n

cout<<"请输入N!中的N\n"

cin>>n

while(n<0)

{

cout<<"输入有错!请重新输入!"<<endl

cin>>n

}

if(n==0)

exit(1)

return n

}

int getbitnum(int n)

{

double sum=1.0

for(int i=1i<ni++)

sum+=log10(i)

return (int)sum

}

char * init(int size)

{

char *pa=new char[size]

if(!pa)

{

cout<<"too large factor of"<<size<<endl

exit(1)

}

pa[0]=1

for(int i=1i<sizei++)

pa[i]=0

return pa

}

void calc(char *a,int n)

{

double bitcount=1

int begin=0

for(int i=2i<=ni++)

{

long and=0

bitcount+=log10(i)

if(a[begin]==0)

begin++

for(int j=beginj<int(bitcount)j++)

{

and+=i*a[j]

a[j]=char(and%10)

and/=10

}

}

}

void display(char *a,int size)

{

int bit=0

for(int i=size-1i>=0i--)

{

if(bit%60==0)

cout<<endl<<"第"<<setw(3)<<(bit/闭掘轿50+1)<<"个50位:"

cout<<轿肆(int)a[i]

bit++

}

cout<<endl

}

void main()

{

int n=getn()

int size=getbitnum(n)

char *pa=init(size)

calc(pa,n)

display(pa,size)

delete []pa

}

楼上的几位代码没有错误,我赞同。但是只能算一些n比较小散腊的阶乘,遇到数字大的就会溢出。楼主可以试试1000的阶乘。我的这个可以算大一点的数


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12354369.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存