例如,如果我有一个数组@arr =(0,1,2),我想输出所有排列:
0 1 2 0 2 1 1 0 2 1 2 0 2 0 1 2 1 0
它应该是一个返回迭代器的函数(延迟/延迟评估,因为n!可能变得如此不可能大),所以它可以像这样调用:
my @arr = (0,1,2); my $iter = getPermIter(@arr); while (my @perm = $iter->next() ){ print "@perm\n"; }