php中阶乘的排列

Kan*_*ika 2 php permutation factorial

不知道怎么解释.但也许下面的例子会让你理解我的问题是什么.

示例:

我有一个包含3个元素的数组.

$elements = array( 'A', 'B', 'C' );
Run Code Online (Sandbox Code Playgroud)

排列将是3 in 3.所以结果是:

A-B-C ; A-C-B ; B-A-C ; B-C-A ; C-A-B; C-B-A
Run Code Online (Sandbox Code Playgroud)

我不希望任何排列2中3或1中3,只有3中3,如您在示例中所见.因此,如果我在一个数组中有4个元素,则排列是4中的4,依此类推......

(我认为排列的数量是3!= 1*2*3 = 6个排列,4!= 1*2*3*4 = 24个排列......这就是为什么我称之为因子的排列.)

如果还有其他问题和答案类似于我的问题,请告诉我

Add*_*der 5

使用递归函数:

function permutations($elements) {
    if(count($elements)<2) return $elements;

    $newperms= array();
    foreach($elements as $key=>$element) {
        $newelements= $elements;
        unset($newelements[$key]);

        $perms= permutations($newelements);
        foreach($perms as $perm) {
            $newperms[]= $element."-".$perm;
        }
    }
    return $newperms;
}
Run Code Online (Sandbox Code Playgroud)

没有测试,所以仍然有你的工作;-)