10!的程序

来源:百度知道 编辑:UC知道 时间:2024/05/16 17:04:39
package jiec;

public class Jiec {

/**
* @param args
*/
public static void main(String args[])
{
int sum=1,a=1;
int i=1;
while (i<=9)
{

i=i+1;
a=a*i;
sum=sum+a;

}
System.out.println("sum="+sum);
}

}
这是10的介乘。1000的介乘怎么算啊?

用加的方法来做1000!显然有点疯狂,毕竟没有哪个变量能存那么多的数
唯一的方法是将结果用若干的变量来表示(至少我是这么认为的)
比如说定义个数组,每个只存一个一位数,比如data[100]
乘过以后的进位就加到后面的数上面去,比如说6!
data[0]=1*2(data[0]=2)
data[0]=2*3(data[0]=6)
data[0]=6*4(data[0]=4 data[1]=2)
data[0]=4*5 data[1]=2*5(data[0]=0 data[1]=2 data[2]=1)
data[0]=0*6 data[1]=2*6 data[2]=1*6(data[0]=0 data[1]=2 data[2]=7)
所以6!=720
试试看嗬,有问题谢谢予以指正

首先,你的程序有问题
不需要用sum加,你是算10!,不是1!+2!+3!。。。。。+10!
从算法上面来说,你只需要把程序里面的9改变成为999就可以了
但是正如 灵星飞雪 说的,没有这么大的变量能够存储这么大的数
这样的话,你需要用链表来定义结果的每一位,头结点为最低位,末端为最高位(因为链表长度可变)。自己写一个乘法函数,用乘数去乘以链表的每一个节点,然后判断进位,这样就可以完成任意大小数字的乘法和进位了。

当然,如果你的阶乘数字很大,例如10^99!,那么你就需要把乘数也写成一个链表结构。这种情况很少见,毕竟运算量太大,你一辈子都算不出结果。。。。。
------------------------------------------------------
看来你是用java,那么只有把数组的大小设大一点才行了

package jiec;

public class Jiec {

/**
* @param args
*/
public static void main(String args[])
{
int sum=1,a=1;
int i=1;