我正在创建一个集合的所有可能排列,比如 {1,2,3},因为我每次都可以选择两个数字。我知道这可以使用 permutations 函数来完成,但我的列表可能非常大,并且在创建如此巨大的矩阵之后,对其进行任何操作都需要很长时间。因此,我编写了以下递归函数来满足我的需求:
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 ...