讨论:一个阶乘的程序.

jiangjian0427 2004-07-13 08:51:24
现在上班了,回想起大学中有个老师教我们数据结构的时候演示了一个阶乘的程序,将某个数字的阶乘的结果打印出来,当初是用TC写的,我记得是很短的代码段,应该在50行之内的,不知到大家有没有兴趣写写?
...全文
233 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
bighappy 2004-07-14
  • 打赏
  • 举报
回复
现在程序员个个都会用for循环啊,呵呵
haoren7842 2004-07-14
  • 打赏
  • 举报
回复
好像是用数组模拟的,我有源代码不过是c的,只是好像得500行,用c++的也得150多行
hl_longman 2004-07-14
  • 打赏
  • 举报
回复
一定只能用数组来模拟了!
hykwolf 2004-07-14
  • 打赏
  • 举报
回复
public class aaa {
public static void main(String[] args){
BigInteger bi = BigInteger.valueOf(100);
for(int i=bi.intValue()-1;i>0;i--){
bi = bi.multiply(BigInteger.valueOf(i));
}
System.out.println(bi.toString());//这里要用toString()方法打印,结果就是你想要的,但是不是科学计数法,结果超长的
}

}
同桌老王 2004-07-14
  • 打赏
  • 举报
回复
http://blog.csdn.net/kevin_wang/archive/2004/07/14/41334.aspx
同桌老王 2004-07-14
  • 打赏
  • 举报
回复
http://blog.csdn.net/kevin_wang
大家可以对他优化一下。
jiangjian0427 2004-07-13
  • 打赏
  • 举报
回复
当初上课睡觉了,后悔啊,现在学java正好拿来讨论一下
jiangjian0427 2004-07-13
  • 打赏
  • 举报
回复
当然不是简单的循环向乘了,要不然老师也不要拿来讲,50行代码吧
superpop 2004-07-13
  • 打赏
  • 举报
回复
大哥,100的阶乘都超过最大数字的范围了
你是不是记错了哦
jiangjian0427 2004-07-13
  • 打赏
  • 举报
回复
大家用的方法不对,当初老师示范的数字是100的阶乘,你们的到20都挂了
superpop 2004-07-13
  • 打赏
  • 举报
回复
我用递归的方法
void f(int n)
{
if(n==1)
return 1;
else
return n*f(n-1);
}
jiangjian0427 2004-07-13
  • 打赏
  • 举报
回复
其实老师在TC下面实现的就是BigInteger.multiply()的方法,这是一个算法的问题
大家没有看出来?
ChDw 2004-07-13
  • 打赏
  • 举报
回复
应该使用BigInteger
BigInteger result = BigInteger.valueOf(1);
for(int i = 2; i <= max; i++) {
result = result.mulitply(BigInteger.valueOf(i));
}
黑马 2004-07-13
  • 打赏
  • 举报
回复
public int factorial(int max)
{
int result=1;

for(int i=1;i<max;i++)
{
resulst*=i;
}

return result;
}
maowu 2004-07-13
  • 打赏
  • 举报
回复
int n = Integer.valueOf(JOptionPane.showInputDialog(this, "3")).intValue();
long result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
System.out.println(result);

当n<=0的情况没有考虑,因为我不记得在数学中是怎么定义的了。
chy2swl 2004-07-13
  • 打赏
  • 举报
回复
int n,i,s;
s=1;
for(i=n;i>0;i--)
s=s*i;
System.out.println(s);

同桌老王 2004-07-13
  • 打赏
  • 举报
回复
是用数组表示结果的。我依稀记得
dryr 2004-07-13
  • 打赏
  • 举报
回复
同意楼上,是用数组模拟的,数组的每一位只放一个数字。数组的每一位数字分别与给出的数字(0-100)相乘,并处理进位问题(进位就是向前面的数组项加数字,可能会有连续进位)。大体的思路是这样的,但现在很忙,没有时间实现。
boris2002 2004-07-13
  • 打赏
  • 举报
回复
我也听说过这个问题:求100的阶乘。但是我不知道答案。
不能用1楼的做法,因为整形长度不够大。好像是应该建立一个数组模拟乘法。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧