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()代码>