【发布时间】:2014-12-06 12:52:17
【问题描述】:
我尝试将一个从 answer 生成排列的函数移植到 PHP 中,结果如下:
function recurse($s, $arrs, $k) {
if ($k === count($arrs)) {
echo $s.' ';
} else {
foreach ($arrs[$k] as $o) {
recurse($s.$o, $arrs, $k + 1);
}
}
}
这给了我正确的输出
137 138 147 148 237 238 247 248
现在我想将输出作为一个数组而不是一个字符串,但是在编辑之后由于某种原因我得到了错误的结果:
function generatePermutations($s, $arrs, $k) {
if ($k === count($arrs)) {
print_r($s);
} else {
foreach ($arrs[$k] as $o) {
$s[] = $o;
generatePermutations($s, $arrs, $k + 1);
}
}
}
输出:
数组
(
[0] => 1
[1] => 3
[2] => 7
)
大批
(
[0] => 1
[1] => 3
[2] => 7
[3] => 8
)
大批
(
[0] => 1
[1] => 3
[2] => 4
[3] => 7
)
大批
(
[0] => 1
[1] => 3
[2] => 4
[3] => 7
[4] => 8
)
大批
(
[0] => 1
[1] => 2
[2] => 3
[3] => 7
)
大批
(
[0] => 1
[1] => 2
[2] => 3
[3] => 7
[4] => 8
)
大批
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 7
)
大批
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 7
[5] => 8
)
这是两个函数的输入
$in = array( array(1, 2), array(3, 4), array(7, 8) );
recurse("", $in, 0);
generatePermutations(array(), $in, 0);
我做错了什么?
【问题讨论】: