php递归函数在结束前返回

php递归函数在结束前返回,php,recursion,Php,Recursion,我得到了以下递归函数: private function myRecursiveFunction() { $results = []; //stuff related to $results ... if(!$done){ ..... $this->myRecursiveFunction(); } return $results; } 当我在函数内部执行var\u dump($results)时,我得到了所有数组结果 但是当我从另一个函数调

我得到了以下递归函数:

private function myRecursiveFunction()
{
  $results = [];
  //stuff related to $results
  ...
  if(!$done){
     .....
     $this->myRecursiveFunction();
    }
  return $results;
}
当我在函数内部执行
var\u dump($results)
时,我得到了所有数组结果

但是当我从另一个函数调用该函数时,我将只得到
$results
数组中的第一个元素

public function myFunction()
{
 $results = $this->myRecursiveFunction();
}

我不是100%确定您希望在这里完成什么,但是递归函数通常将其“工作负载”一直发送到最内部的函数,然后在返回的过程中相互“添加”结果。如果这确实是您想要的,您可能需要将代码更改为以下内容:

private function myRecursiveFunction()
{
  $results = [];
  //stuff related to $results
  ...
  if(!$done){
     .....
     // Add the computed results of the recursive call to our data stack
     $results[] = $this->myRecursiveFunction();
    }
  // Return the entire result array
  return $results;
}

我不是100%确定您希望在这里完成什么,但是递归函数通常将其“工作负载”一直发送到最内部的函数,然后在返回的过程中相互“添加”结果。如果这确实是您想要的,您可能需要将代码更改为以下内容:

private function myRecursiveFunction()
{
  $results = [];
  //stuff related to $results
  ...
  if(!$done){
     .....
     // Add the computed results of the recursive call to our data stack
     $results[] = $this->myRecursiveFunction();
    }
  // Return the entire result array
  return $results;
}

我可能不正确,但我认为递归函数通常使用参数?如果每次都使用相同的输入(无),这怎么可能是真正的递归呢?要递归,函数内的第n次调用必须对原始的
$result
,要么通过引用传入参数,要么通过检索值,例如使用
$result[]=$this->myRecursiveFunction()我可能不正确,但我认为递归函数通常使用参数?如果每次都使用相同的输入(无),这怎么可能是真正的递归呢?要递归,函数内的第n次调用必须对原始的
$result
,要么通过引用传入参数,要么通过检索值,例如使用
$result[]=$this->myRecursiveFunction()