欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php用递归实现字符串的全排列?该怎么解决

程序员文章站 2022-06-10 14:21:25
...
php用递归实现字符串的全排列?
我想在程序中实现打印字符串的全排列,代码如下

function output ($src_arr)
{
foreach ($src_arr as $key => $value) {
$temp_arr = $src_arr;
echo $value;
if (! empty($temp_arr)) {
array_splice($temp_arr, $key, 1);
output($temp_arr);
return;
} else {
echo "
";
return;
}
}
}

$str = 'abc';
$src_arr = str_split($str);
output($src_arr);



但是结果只是打印abc,我想问一下究竟是什么原因,我感觉没什么问题,请大神指教!
------解决思路----------------------
$a = array(1,2,3);
perm($a, 0, count($a)-1);

function perm($ar, $k, $m) {
if($k == $m) echo join('',$ar), PHP_EOL;
else {
for($i=$k; $i swap($ar[$k], $ar[$i]);
perm($ar, $k+1, $m);
}
}
}
function swap(&$a, &$b) {
$c = $a;
$a = $b;
$b = $c;
}
如果按引用传递原始数组则
$a = array(1,2,3);
perm($a, 0, count($a)-1);

function perm(&$ar, $k, $m) {
if($k == $m) echo join('',$ar), PHP_EOL;
else {
for($i=$k; $i swap($ar[$k], $ar[$i]);
perm($ar, $k+1, $m);
swap($ar[$k], $ar[$i]);
}
}
}
function swap(&$a, &$b) {
$c = $a;
$a = $b;
$b = $c;
}
这个思路要比你的清晰吧?(移植的 C 代码)
php用递归实现字符串的全排列?该怎么解决

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频