如何編程與階乘
回答
這是不太可能超過一些整數/長最大值(和使用需要較少的週期):
public static long d(int n){
long top = 1;
long bom = n + 1;
for(int q = 1; q <= n; q++){
top *= n + q;
bom *= q;
}
return top/bom;
}
如果溢出成爲一個真正的問題,人們可能會投擲「雙',對所有操作使用對數(更好的精度),取冪,然後舍入到最近的整數。不知道如何得到錯誤答案(由於浮點不精確)。思考? – jadhachem 2015-02-09 19:14:38
@jadhachem http://en.wikipedia.org/wiki/Stirling%27s_approximation – laune 2015-02-09 19:19:57
你想說什麼?我的評論與斯特林的近似無關。我的意思是不用做'(a * b)/(c * d)',可以做'log(a)+ log(b)-log(c)-log(d)'。 – jadhachem 2015-02-09 19:27:55
top=2*q*top;
應該是
top=2*q*(2*q - 1)*top;
,否則top
省略了奇怪的因素(但我同意你應該考慮因子函數的評論)。
- 1. C編程階乘輸出錯誤值
- 2. java編程階乘幫助請
- 3. Java程序階乘
- 4. 概率計算器與階乘方程
- 5. 階乘彙編代碼
- 6. 如何獲得階乘值
- 7. 如何使階乘更快?
- 8. 如何獲得階乘(100)
- 9. Python和與分數階乘
- 10. 問題與階乘表
- 11. 的Javascript階乘程序
- 12. 大整數乘法(階乘)
- 13. 遞歸:階乘
- 14. 階乘問題
- 15. 階乘170+
- 16. 階乘算法
- 17. Python和階乘
- 18. 計算階乘
- 19. 階乘一些
- 20. 階乘限制
- 21. 問題彙編代碼,計算階乘
- 22. 返回列表編號的階乘
- 23. 編譯器如何優化這個階乘函數?
- 24. 如何在目標c中編寫階乘函數
- 25. 如何在Javascript中使用setTimeout或setInterval編寫階乘函數
- 26. 如何使用L語言編寫階乘函數?
- 27. 如何添加階乘值的結果?
- 28. 如何檢查no是否是階乘?
- 29. 如何計算這個階乘
- 30. 無論如何去逆階乘函數?
進行單獨的方法來計算階乘並在公式中使用它。 – 2015-02-09 18:53:07
@SufiyanGhori然後這更有可能超過整數或長期能力的一些上限。 – laune 2015-02-09 18:58:05
你是否熟悉遞歸呢?這是用一個簡單的遞歸函數完美的例子。 – JNYRanger 2015-02-09 18:58:09