0

私は無駄な単純な二項係数アルゴリズムを見つけようとして周りを見回してきました。問題は、私が授業に使用している言語が少し...奇妙なことです。その多くはYaccとLexを使用しています。

とにかく、クラスで例を示しました。

n=12; p=1; i=1;
while (i <= n) {
        p = p * i;
        print p;
        i = i + 1;
};

これは階乗の計算の例でしたが、C(n、k)またはNを計算できるように変更する必要があります。K(別名二項係数)を選択しますが、それほど複雑にする必要はありません。任意のNとKを選択できるため(ユーザーはそれらを入力する必要はありません)、任意の2つの乱数が機能します(上記の例のように)。このコードはwhileループや基本的な数学などの基本的な関数しかサポートしていないと確信しているので、階乗を使用することはできないと思います...しかし、上記のコードをそのまま使用できると思いますか?

何か案は?

4

2 に答える 2

2

これは宿題だと思っているので、解決策を提供するつもりはありません。私が言うことはこれです:

除算、減算、乗算、階乗に依存するC(n、k)の式があります。

n!/(k!(n-k)!)

階乗を計算できるコードがすでにあり、使用している言語が必要な他の数学演算子をサポートしているようです。

したがって、あなたがしなければならないのは、3つの階乗を計算することです。1つは、、もうn1kつはn-k

于 2010-11-11T20:08:06.740 に答える
0

プラグインライブラリが必要な場合は、いつでもBoostライブラリを使用できます:http ://www.boost.org/doc/libs/1_35_0/libs/math/doc/sf_and_dist/html/math_toolkit/special/ factorials / sf_binomial.html

于 2011-05-06T16:47:47.257 に答える