㈠ 编程代码.高手指教设计Function过程计算:S=1!+3!+……+10!
这题首先有个不明白的地方:是连续的项的阶乘和?(那为什么没有2。。。)还是连续的奇数项的阶乘和?(那为什么有10。。。)
不管怎么样(我就当是连续的项的阶乘和吧)思想是一样的。
首先,设计一个函数f(intx)计算x的阶乘,然后S=f(1)+f(2)+...+f(10)
inta[16];
intf(intx){//函数:计算每一个参数x的阶乘
if(x==0)
returna[x]=1;
returna[x]=x*f(x-1);//用a[x]记录中间值,减少不必要的重复计算
}
与一般的递归函数不一样的在于,用一个数组,记录中间值,这样以后用到这些值时,可以避免大量对其的重复计算,直接调用以前算过的结果即可。
下面是所有的源代码:
#include<iostream>
usingnamespacestd;
inta[16];
intf(intx){//函数:计算每一个参数x的阶乘
if(x==0)
returna[x]=1;
returna[x]=x*f(x-1);//用a[x]记录中间值,减少不必要的重复计算
}
intF(intn){//函数:计算1-n的连续阶乘和
intsum=0;
for(inti=1;i<=n;i++)
sum+=f(i);
returnsum;
}
voidprint(intn){//函数:打印1-n的每个参数的阶乘值
for(inti=1;i<=n;i++)
cout<<i<<"!="<<f(i)<<endl;
}
intmain(){
cout<<F(10)<<endl;
print(10);
system("pause");
return0;
}
执行结果,截图:
希望我的回答能对你有帮助~O(∩_∩)O~
㈡ C语言中如何编程计算阶乘
常见的有两种:
递归版本:
intFac(intn){
if(n==0)return1;
returnn*Fac(n-1);
}
还有一种是循环版:
intans=1;
for(inti=1;i<=n;i++)ans*=i;
测试方法:
#include<stdio.h>
intFac(intn){
if(n==0)return1;
returnn*Fac(n-1);
}
intmain(){
intn;
while(scanf("%d",&n)!=EOF){
intans=1;
for(inti=1;i<=n;i++)ans*=i;
printf("%d%d ",ans,Fac(n));
}
return0;
}
有个值得注意的地方内:阶乘时,数增大容的很快,在n达到13时就会超过int的范围,此时可以用long long或是 __int64来存储更高精度的值,如果还想存储更高位的,需要用数组来模拟大数相乘。
㈢ c语言如何计算阶乘
法/步骤
第一步、编程的第一步就是写头文件,对于初学者来说,只写一个头文件就可以了,即#include<stdio.h>
拓展资料
定义
n!=1×2×3...xn
n!=X×(X-1)×(X-2)...×1
1751年,欧拉以大写字母M表示m阶乘M=1x2x3...x...m
1799年,鲁非尼在他出版的方程论著述中,则以小写字母π表示m阶乘。而在1813年,高斯则以Π(n)来表示n阶乘。而用来表示n阶乘的方法起源于英国,但仍未能确定始创人是谁。直至1827年,由于雅莱特的建议而得到流行,现在有时也会以这个符号作为阶乘符号。
当n较大时,直接计算n!变得不可能,这时可通过斯特灵(Stirling)公式计算近似算或取得大小范围。