我正在尝试编写一个 Matlab 以按字典顺序列出数字 1 到 n 的所有排列。到目前为止我所拥有的如下。我正在使用递归来尝试编写一个首先适用于 n=3 的程序,然后看看我是否可以深入了解为任何 n 编写程序。到目前为止,对于 n=3: ,我有 6 列中的 2 列P=[1 2 3;1 3 2]
。我需要接下来的两列来简单地交换一个和两个。我不知道如何开始这样做。
function [P] = shoes(n)
if n == 1
P = 1;
elseif n == 2
P = [1 2; 2 1];
else
T = shoes(n-1) + 1;
G = ones(factorial(n-1),1);
P(1:2,1:3) = [G T];
end