新しく再帰という概念を習い始めたのですが、組み合わせを求めるやり方がわかりません
組み合わせの公式通り(nCk → n!/k!(n-k)!)、例えば4C2なら答えは6通りになるのはわかるのですが、
public static int combinations(int n, int k){
if(k==n){
return 1;
}else if(k=1){
return n;
}else if(0<k && k<n){
combinations(n-1, k-1) + combinations(n-1, k) ←これで出来るらしいのです
}
}
combinations(n-1, k-1)は意味がわかるのですが、combinations(n-1, k)これが組み合わせの公式にどうあてはまっているのかがわからず、
そして何故足してるのかがよくわかりません。どなたかお解かりになればお願いします
No.2ベストアンサー
- 回答日時:
こんばんわ。
私も再帰処理とか懐かしいなと思って、ちょっと読みはじめて
不思議に思いました。
combinations(n-1, k-1) + combinations(n-1, k)
強引ですけど
上記式を(nCk → n!/k!(n-k)!)にあてはめて、展開すると
もとの式と一致します。
ということは、(nCk → n!/k!(n-k)!) から
combinations(n-1, k-1) + combinations(n-1, k)も導き出せるはずなのかなと思いました。
直訳すると「n[個]からk[個]選ぶ」組み合わせは
(n-1)[個]から(k-1)[個]選ぶ、(n-1)[個]からk[個]選ぶ
組み合わせの和と等しい
だと思いますが、なぜこの式なのかは分かりません。
すみません。
みなさんどうもありがとうございました!組み合わせと再帰のアルゴリズムがよくわかっていなかったのでこんがらがってしまいました。
ありがとうございました!
No.4
- 回答日時:
たしかに高校の数学ですね。
実際に動かしてみて、デバッガやprint文出力で挙動を確認してみては。
頭が働かないときは体を動かすのもひとつの手。
No.3
- 回答日時:
同じような記述をネット上で見つけました。
(すみません、私自身が興味半分で調べているので、もう適当です。)
参考URL:http://d.hatena.ne.jp/ibaza/20080303/1204476552
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# C言語 3 2022/11/09 13:27
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# プログラムの時、フローチャートはどうなりますか?図でお願いします。 int main(void) { 1 2022/10/01 22:45
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c# デリゲート関連の命名について
-
SwingでJtableのヘッダ行が表示...
-
リサージュ図形
-
java 長さの異なる配列の代入
-
java spring でエラーが出て困...
-
式の型は配列型で int に解決済...
-
消費税を計算
-
「配列定数は、イニシャライザ...
-
偶数奇数の判定
-
アンマネージDLLで、ダイアログ...
-
JAVA EOFの検出 (条件文で「...
-
JTableのセルの背景色について
-
共有メモリについて
-
java streamでenum配列への変換
-
(Swing)JTextFieldを半角のみ入...
-
Java 初心者 int型の取り扱い方
-
JAVA エラー 式の開始が不正で...
-
intが負の時に投げる例外はあり...
-
JAVAでCの関数ポインタのような...
-
6桁の数字を重複なしでランダム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
Javaで電卓を作りたい
-
式の型は配列型で int に解決済...
-
javaでカレンダー作成
-
JAVA エラー 式の開始が不正で...
-
JAVAでCの関数ポインタのような...
-
java spring でエラーが出て困...
-
6桁の数字を重複なしでランダム...
-
c# デリゲート関連の命名について
-
C++からC#のdllを参照する際、...
-
メインが含まれていません
-
(Swing)JTextFieldを半角のみ入...
-
DataSet(DataTable)の使い方
-
三目並べ(Tick-Tack-Toe)をJav...
-
JUnit4のアノテーションについて
-
初心者ですが、今javaで簡単な...
-
classを使って座標軸を求めるコ...
-
javaでcsvファイル読込時の改行...
-
C#で実行時にメソッドの返り値...
-
Java 初心者 int型の取り扱い方
おすすめ情報