求1/20! 用java怎么编程?

walcott2387 2011-02-25 04:35:31
如题
...全文
168 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ronniegxq 2011-02-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 bao110908 的回复:]

反正是阶乘的倒数,也不可能精确,如果阶乘数很大的话,可以用阶乘的非精确计算公式计算:

提供两种算法吧,都不是精确的

1,斯特林公式,算法复杂度 O(1):



pi 是圆周率;e 是自然对数的底

2,将乘法化为加法的公式,算法复杂度 O(N):

n! = 1 * 2 * 3 * ... * (n - 1) * n
log(n!) = log(1) + lo……
[/Quote]膜拜~~~
java_1014 2011-02-26
  • 打赏
  • 举报
回复
int sum = 1;
int i = 1;
for(i>0;i<=20;i++){
sum = sum*(1/i);
}
mopishv0 2011-02-26
  • 打赏
  • 举报
回复
火龙果的方法效率高 LZ也可以参考
但是会有精度损失
mopishv0 2011-02-26
  • 打赏
  • 举报
回复
java.math.BigDecimal
LZ看看JDK里的这个API
高精度运算的
iambic 2011-02-26
  • 打赏
  • 举报
回复
楼主应该自己解决这个问题了。我看他另外一篇帖子里的代码nb的很。
  • 打赏
  • 举报
回复
反正是阶乘的倒数,也不可能精确,如果阶乘数很大的话,可以用阶乘的非精确计算公式计算:

提供两种算法吧,都不是精确的

1,斯特林公式,算法复杂度 O(1):



pi 是圆周率;e 是自然对数的底

2,将乘法化为加法的公式,算法复杂度 O(N):

n! = 1 * 2 * 3 * ... * (n - 1) * n
log(n!) = log(1) + log(2) + log(3) + ... + log(n - 1) + log(n)
n! = 10^(log(1) + log(2) + log(3) + ... + log(n - 1) + log(n))
  • 打赏
  • 举报
回复
一个一个地算呗

(1.0/2) * (1.0/3) * (1.0/4) * ... * (1.0/20)
wolcott2387 2011-02-25
  • 打赏
  • 举报
回复
用system.out.print实现,怎么编?
iambic 2011-02-25
  • 打赏
  • 举报
回复
user=> (/ 1.0 (apply * (range 1 21)))
4.110317623312165E-19
walcott2387 2011-02-25
  • 打赏
  • 举报
回复
可能我没说清楚,不是求计算结果,是求程序。
iambic 2011-02-25
  • 打赏
  • 举报
回复
结果是4.1103176233121648e-19,差不多等于0。你就当是0好了。
walcott2387 2011-02-25
  • 打赏
  • 举报
回复
对,就是4楼的意思:计算1除以20的阶乘
penghaiwudi 2011-02-25
  • 打赏
  • 举报
回复
楼主的意思计算1除以20的阶乘
不善^ 2011-02-25
  • 打赏
  • 举报
回复
楼主说清楚 题目啊
jackey_ctdw 2011-02-25
  • 打赏
  • 举报
回复
int a=1;
int b=1;
c=a/b;
strike2368168 2011-02-25
  • 打赏
  • 举报
回复
!是干嘛用的。
syste.out.print(1/20);

23,407

社区成员

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

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