2012-01-29 4 views
2

私はコンビナトリアルに精通していませんが、PHPを使用してC(m,n)を計算する必要があります。簡単な方法は何ですか?C(m,n)を見つけますか?PHPでコンビナトリアルを行うにはどうすればいいですか?

+0

あなたは問題*組み合わせ論を理解する*、* *既存の関数を探して*アルゴリズムを実装するか、*を持っていますかである場合には1を返す必要がありますか? – deceze

+0

好ましくは、PHPを使用してC(m、n)を計算する既存の関数。 –

答えて

1

私はWikipediaの公式を使用しています。これはうまくいくはずです:

function fact($n){ 
    $f=$n--; 
    while($n>0) 
    $f*=$n--; 
    return $f; 
} 


function c($n,$m){ 
    return fact($n)/(fact($m)*fact($n-$m)); 
} 

echo c(6,3); 

私の機能に何か問題がある場合はお知らせください。

+0

これらの機能はあなたが望むことをします。階乗はかなり単純ですが、再帰的に行うこともできます。 c()関数は、繰り返しの組み合わせを計算します。 –

+0

あなたは 'C(m、n)'を探していますが、その実装は 'c($ n、$ m)'と書かれているので、ここで名前を入れ替えたようです。また、あなたがこれを持っているウィキペディアの記事へのリンクを残してください。 – hakre

0

階乗は、結果が0

function fact($n){ 
     $f=$n--; 
     while($n>0) 
     $f*=$n--; 
     if($f==0){ 
     return 1; 
     } 
     return $f; 
    } 
関連する問題