主题:一个想了3天3夜没想出来的问题
缄默已久
[专家分:0] 发布于 2005-06-06 12:18:00
[em10]这个问题就是怎么编程算出1到100的阶乘?那为老师能告诉我该怎么实现么?[em18]
回复列表 (共27个回复)
11 楼
churche [专家分:0] 发布于 2005-06-22 21:03:00
100!=9.3326215443944152681699238856267e+157
定义长整型类,重载乘法
12 楼
运动男孩 [专家分:0] 发布于 2005-06-24 10:40:00
应该用链表就储存这个数字
用其他的早就益出了、
13 楼
liangbch [专家分:1270] 发布于 2007-04-28 17:30:00
可以看看这个网站( blog.csdn.net/liangbch), 内有大数阶乘的最详尽的算法讨论和代码。
14 楼
wohahajim02 [专家分:0] 发布于 2007-04-28 17:36:00
哈哈 晕了有人比我还菜~~ 这个我还是会的 嘿嘿
15 楼
lt19870917 [专家分:750] 发布于 2007-04-28 18:13:00
动态编程
16 楼
bpttc [专家分:8790] 发布于 2007-04-28 22:04:00
93326215443944152681699238856266700490715968264381621468592963895217599993229915
608941463976156518286253697920827223758251185210916864000000000000000000000000
17 楼
zhangzhengxu [专家分:100] 发布于 2007-04-29 12:51:00
但是 如果用int型的数据,如果100的阶乘如果过于的话,回出错啊
[em18][em18][em18]
18 楼
robinmu [专家分:10] 发布于 2007-04-29 20:02:00
int Factor(int n)
{
if(<=1)
return 1;
else
return n*Factor(n-1);
}
这是递归的阶乘函数,不过有溢出问题,lz自己试着改改吧!!
19 楼
Fandywang [专家分:0] 发布于 2007-04-29 21:10:00
//求n!,用数组arr 存数值,并返回总的位数
int Factorial(int *arr, int n)
{
int i, j, temp;
int carry;//进位
int digit = 1;//位数,必须初始值1
arr[0] = 1;//初始化
for(i=2; i <= n; i++)
{
for(j=carry=0; j < digit; j++)
{
temp = arr[j]*i+carry;
arr[j] = temp%10;
carry = temp/10;
}
while(carry)
{
arr[digit++] = carry%10;
carry /= 10;
}
}
return digit;
}
20 楼
Fandywang [专家分:0] 发布于 2007-04-29 21:11:00
//求n!,用数组arr 存数值,并返回总的位数
int Factorial(int *arr, int n)
{
int i, j, temp;
int carry;//进位
int digit = 1;//位数,必须初始值1
arr[0] = 1;//初始化
for(i=2; i <= n; i++)
{
for(j=carry=0; j < digit; j++)
{
temp = arr[j]*i+carry;
arr[j] = temp%10;
carry = temp/10;
}
while(carry)
{
arr[digit++] = carry%10;
carry /= 10;
}
}
return digit;
}
我来回复