ニュートンの二項係数について私のプログラムに問題があります。最初は負の数を表示しましたが、階乗関数タイプをunsigned long long
に変更すると、負の数を印刷する問題が解決されたようです。このプログラムは最大でn = 20
で動作し、それより上にゼロ、1および2を印字します。それを修正する方法は考えていないし、うまくいけば誰かが私に手を差し伸べることができる。C++のニュートン二項係数に関する問題
答えて
階乗は一般的に非常に大きいので、ここで整数オーバーフローが発生します。この問題を修正するには、たとえば、階乗を使用していないC(n, k)
計算の他のアルゴリズムを実装することができます:ここでは、以下の再発規則が使用されている
unsigned long long C(unsigned n, unsigned k) {
if (n == k || k == 0) {
return 1; // There's exactly one way to select n or 0 objects out of n
}
return C(n - 1, k - 1) * n/k;
}
:C(n, k) = C(n - 1, k - 1) * n/k
を。 C(n, k) = n!/(k! (n-k)!) = (n/k) * (n-1)!/((k-1)!(n-1-k+1)!)
から証明するのはとても簡単です。
'n!= k'ならばこれは決して終わらないでしょうか? – Ruslan
@Ruslanはい、誤植。固定 – alexeykuzmin0
それはほとんどの場合、関数が再帰的である必要がないかのようです。 – Dialecticus
- 1. Cの二項係数プログラムの説明
- 2. 二項係数[プロローグ]
- 3. 二項係数は
- 4. 二項係数 - ゼロ除算
- 5. 二項の係数を解析するC++
- 6. 二項係数関数階乗または多項式の増加です。
- 7. 昇圧二項係数のログバージョン?
- 8. CSS calc()に関する問題変数に関係する式
- 9. 関係の問題
- 10. C++の関数の問題、
- 11. C関数シグネチャの問題
- 12. C# - Azure関数の問題
- 13. C++:関数テンプレートの問題
- 14. C++テンプレート関数の問題
- 15. 非整数で二項係数を計算する方法
- 16. スプリングテーブルの関係の問題
- 17. ストレージの問題の関係
- 18. データベース関係の問題
- 19. Laravel関係の問題
- 20. マッピングファイル(関係)の問題
- 21. Laravel withManyThrough関係の問題
- 22. 依存関係の問題
- 23. Laravelレコード関係の問題
- 24. データ関係の問題
- 25. MySQLの関係-問題
- 26. laravel関係の問題
- 27. SQLAlchemy ManyToOne関係の問題
- 28. Laravel:関係の問題
- 29. データベーステーブル関係の問題
- 30. C++の数学関数の問題
ファクトリは非常に迅速に非常に大きくなります。式を単純化する方法を考えることができますので、中間項はそれほど大きくはありませんか?これらの要因の多くは相殺されます。 – BoBTFish