首页 > 解决方案 > 递归 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。

标签: phprecursion

解决方案


经过一次排列后,解决方案在您的标题中,为什么这个递归函数return没有值?

return noOfPermutations(array_sum($array), $permutation);

您还可以查看array_reduce


推荐阅读