php - 递归 PHP - 在一个排列之后,为什么这个递归函数不返回一个值?
问题描述
function noOfPermutations($n, $permutation){
$array = str_split($n);
if(count($array)==1) {
echo $permutation."\n";
return $permutation;
}else{
$permutation++;
noOfPermutations(array_sum($array), $permutation);
}
}
echo "--".noOfPermutations(91,0)."--\n";
我试图找到 $n 中的数字总和变为单个的排列数。例如 91 -> 9+1 = 10 -> 1+0 = 1。这需要 2 轮,因此将返回 2。如果 $n 以单个数字开头(它正确返回 0)但不止一个排列,则该函数可以正常工作它只返回null。函数中的第一个回显输出正确的值,但函数外部的回显返回 null。
解决方案
经过一次排列后,解决方案在您的标题中,为什么这个递归函数return
没有值?:
return noOfPermutations(array_sum($array), $permutation);
您还可以查看array_reduce。