无法返回函数值,如果我在函数内部打印了值,当我创建返回变量时,它将返回零我的代码
function permute($str,$i,$n) {
$b="";
if ($i == $n)
$b .=$str.",";
else {
for ($j = $i; $j < $n; $j++) {
swap($str,$i,$j);
permute($str, $i+1, $n);
swap($str,$i,$j); // backtrack.
}
}
return $b;
}
function swap(&$str,$i,$j) {
$temp = $str[$i];
$str[$i] = $str[$j];
$str[$j] = $temp;
}
$str = "375";
$test=permute($str,0,strlen($str));
echo $test;
答案 0 :(得分:2)
function permute($str,$i,$n) {
....
$b . = permute($str, $i+1, $n);
....
return $b;
}
您没有使用内部呼叫的结果。
答案 1 :(得分:0)
您必须使用循环中的返回值
<?php
function permute($str,$i,$n){
$b=NULL;
if ($i == $n){
$b= $str.",";
}else {
for ($j = $i; $j < $n; $j++){
swap($str,$i,$j);
$b.=permute($str, $i+1, $n); //ERROR HERE
swap($str,$i,$j); // backtrack.
}
}
return $b;
}
答案 2 :(得分:0)
这并没有告诉你为什么你的函数出错了,但这就是你如何生成一系列可能的排列:
// permute prefix $s with set $r and store results in $a
function permute($r, array &$a, $s = '')
{
if (!strlen($r)) {
$a[] = $s; // store result
return;
}
for ($i = 0; $i < strlen($r); ++$i) {
// recurse
permute(substr_replace($tmp = $r, '', $i, 1), $a, $s . $r[$i]);
}
}
$str = "375";
$res = [];
permute($str, $res);
print_r($res);