【问题标题】:Recursive function return issue递归函数返回问题
【发布时间】:2020-09-09 04:16:08
【问题描述】:

我正在编写如下递归函数:

 private function getManager($employee)
 {
     $manager = $employee->manager;
     if ($manager) {
         array_push($this->managers, $manager->id);
         $this->getManager($manager);
     }
     return;
 }

此功能接收员工并找到他的经理。如果找到管理,则将 ma​​nager id 推入一个数组($this->managers 在第 5 行)。然后递归调用此函数,并将 manager 作为员工传递。如果在第 3 行没有找到经理,那么这个函数就返回(第 8 行)。

所以我的问题是,如果我不在第 6 行返回递归调用,他们有什么问题吗 ($this->getManager($manager);)

【问题讨论】:

  • 请在此处发布一个示例$employee 结构(最好使用var_export() 输出)。
  • 您是否缺少employee->manager 中的$
  • 这可以正常工作,但我的问题是,是否需要在第 6 行使用 return ?

标签: php recursion


【解决方案1】:

不确定这是否是您的想法,但它确实有效。


function getManagers($employee)
{
  $managers = [];
  if (isset($employee->manager)) {
    array_push($managers, $employee->manager->id);
    array_push($managers, ...getManagers($employee->manager));
  }
  return $managers;
}

【讨论】:

  • 我的代码工作正常,但我的问题是,是否需要在第 6 行使用 return ?
  • 你认为你为什么需要返回?
猜你喜欢
  • 1970-01-01
  • 2015-02-04
  • 2022-01-16
  • 1970-01-01
  • 2010-12-08
  • 2020-12-28
  • 2015-01-27
相关资源
最近更新 更多