毎回 2 つの数値を選択できるため、セットの可能なすべての順列 ({1,2,3} など) を作成しています。これは順列関数を使用して実行できることは理解していますが、私のリストは非常に大きくなる可能性があり、そのような巨大なマトリックスを作成した後は、操作に時間がかかりすぎます。したがって、私が望むことを行う次の再帰関数を作成しました。
h=Table[Null,{}]
myset = {1, 2, 3};
numOfBins = 2;
h=Table[Null,{numOfBins}];
rec[x_] := (
If[
x <= numOfBins,
Do[
h[[x]] = j;
rec[x + 1],
{j, 1, Length[myset]}
],
Print[h]
]
);
rec[1]
このコードの結果は次のとおりです。
{1,1}
{1,2}
{1,3}
{2,1}
{2,2}
{2,3}
{3,1}
{3,2}
{3,3}
今、おそらくNestまたはNestWhileを使用して関数型プログラミングを使用してこれを行う方法を知りたいです...