主页 > 科技生活 >商洛市商州区中学_在C#中编程求1的阶乘2的阶乘一直加到20的阶乘的和的代码 >

商洛市商州区中学_在C#中编程求1的阶乘2的阶乘一直加到20的阶乘的和的代码

在C#中编程求1的阶乘2的阶乘一直加到20的阶乘的和的代码
你这个写个for循环,再写一个阶乘函数就可以了啊追问

我要模版追答

#include
int jc(int a)
{
int i,n=1;
for(i=1;i<=a;i++)
n=n*i;
return n;
}
int main()
{
int i,n=0;
for(i=1;i<=20;i++)
n=n+jc(i);
printf("%d",n);
return 0;
}
你试试吧有问题再问追问

我要的C#语言的追答

这难道不是c语言?追问

我要的C#语言的,不是C语言的

我们还没学C语言了追答

好吧,我只会c和c++追问

哦哦

谢谢了int CalProduct(int val)
{
int pro = 1;

for (int i = 0x01; i <= val; i++)
{
int sum = 0;
for (int j = 0x01; j <= i; j++)
{
sum *= j;
}
pro *= sum;
}

return pro;
}追问

用C#语言,本回答被网友采纳你好!
你这个写个for循环,再写一个阶乘函数就可以了啊
如有疑问,请追问。
编程求20以内所有能被3整除的数的阶乘和


#include
doublejc(intx){
inti;
doubler=1;
for(i=2;ireturnr;
}
main(){
doubles=0;
inti;
for(i=3;i<20;i+=3){
s+=jc(i);
}
printf("%lf ",s);
}
编程阶乘问题


说实话,没有阶乘的公式,有简便方法,只是硬算,也可以运用计,可算到65!,如果你想计算跟大的数,我建议你上百度寻找计算阶乘的软件,听说多大的数都能计算出来。

还有这个参考:

由于阶乘运算的增长速度特别快(比2^n的增长速度快),对于较小整数的阶乘运算采用简单的递规算法可以实现,但是对于大整数的乘法(比如1000!),则传统的递规算法就失去了作用。

由于本人的水平不高,用下列拙劣的方式实现,请高人多多指教。具体如下:定义一个很长的数组,用数组的每一项表示计算结果的每一位。例如,7!=5040,a[1000],则a[0]=0,a[1]=4,a[2]=0,a[3]=5。

程序源代码:

/**
*计算大数的阶乘,算法的主要思想就是将计算结果的每一位用数组的一位来表示:如要计算5!,那么首先将
*(1) a[0]=1,然后a[0]=a[0]*2,a[0]=2,
*(2) a[0]=a[0]*3,a[0]=6
*(3) a[0]=a[0]*4,a[0]=24,此时a[1]=2,a[0]=4
*/
public class Factorial
{
static int a[] = new int [10000];
static void factorial(int n)
{
for(int i=2; i< a.length; i++)
a[i] = 0; //将数组元素初始化
a[0] = 1; //用数组的一项存放计算结果的位数
a[1] = 1; //将第一项赋值为一
for(int j= 2; j <= n; j++)
{
int i=1;
int c = 0; //c表示向高位的进位
for(; i <= a[0]; i++)
{
a[i] = a[i] * j + c;//将来自低位的计算结果和本位的结果相加
c = a[i] / 10;
a[i] = a[i] % 10;
}
for(; c != 0; i++)
{
a[i] = c%10;
c = c / 10;
}
a[0] = i - 1;
}
}
public static void main(String[] args)
{
String num = args[0];

int count = 0;
int n = Integer.parseInt(num);
f(n);
for(int i= a[0]; i>0; i--)
{

count++;
System.out.print(/*"a[" + i + "]=" + */a[i]/* + " "*/);
}
System.out.println("\n"+count);
}
}

Trackback: TrackBack.aspx?PostId=528778

参考资料:hengshan/archive/2005/11/13/528778.aspx拜托,这种问题都问烂了,你问之前不知道搜索一下么??
而且问的还这么模糊,连个描述都有没有,也不说一下什么语言...
服~
问问题也是需要态度的,老兄~
编程求阶乘的问题?
这个方法貌似麻烦所以重 是因为里面每次循环需要算一次阶乘所以要把乘数1 算出来的结果才对但是这样写 就有点麻烦了 其实一道循环就够了下面贴下我的代码希望我的回答对你有帮助 如果有不懂可以继续问我如果你满意我的回答 请选为满意答案 #include void main()
{
int sum=0,m=1;
for(int i=1;i<=5;i++)
{
m*=i;
sum+=m;
}
cout<}用!表示阶乘,不重计算出来的是1+1!2!+1!2!3!+1!2!3!4!+1!2!3!4!5!, 所以是34863。因为不重置,每次都在前一项的基础上乘了一个i!,但是我们只需要在前一项的基础上乘以i就行了,所以多乘了。重置的话,虽然是正确的,但是多此一举嘛,搞什么二重循环?觉得cpu太快了么?已经算好4!了,算5!的阶乘,只需要在4!上乘以5就行了,非得重置为1,然后再乘1 2 3 4 5,太浪费了……正常的写法应该是:int n=0, a=1;for (int i=1; i<=5; i++){a*=i;n+=a;}在这段代码外层循环的目的是依次枚举从1到5一共5字,存入变量j;循环的是求j的阶乘,结果保存为变量a,然后把a累加到变量n。求阶乘需要从1开始,沿自然数列依次向上乘,结果累乘到变量a,所以每次内层循环开始时变量a必须被重置成1,否则求下一个数字的阶乘时就不是从1开始计算了。希望LZ能明白。


上一篇: 下一篇: