長さ n>=k>=0 の指定されたリストのサイズ 'k' のすべてのサブセットを検索し、それらのサブセットのリストを返す再帰関数を構築したいと考えています。
例: 入力リストが [1,2,3,4] で k = 2 の場合、関数は [[4,3],[2,4],[2,3],[1,4], [1,3]、[1,2]]
リストの異なる配列は同じリストと見なされることに注意してください。
この種の再帰はうまくいくはずだと思います:
return [lst[0]] + choose_sets(lst[1:],k-1) ¬¬and¬¬ choose_sets(lst[1:],k)
関数はどこにありますかchoose_sets(lst,k)
。
意味:
入力 : [1,2,3,4] 、k=3
呼び出し:
[1] + [2,3,4],k=2 および [2,3,4],k=3
等々...
これらの2つの再帰呼び出しを「同時に」呼び出す方法について、誰かが私を導くことができますか? そして、私の「終了期間」はどうあるべきですか?
ありがとう。