【问题标题】:Create a recursive function with an array使用数组创建递归函数
【发布时间】:2021-04-18 10:41:01
【问题描述】:

我有一个函数,但无法成功使其递归。 这是我没有递归的函数:

function resolution_recursion($tab1, $tab2){
    $solution = [];
    foreach($tab2 as $nb2){
        foreach($tab1 as $nb1){
            if(($nb2 + $nb1)%2 != 1){
                $solution[] = $nb2 + $nb1;
            }
        }
    }
    return $solution;
}

我想让它递归地让它像这样工作:

$nb_ajout = [2];
$next = [[1,2],[3,4],[5,6],[7,8]];

resolution_recursion(
    resolution_recursion(
        resolution_recursion(
            resolution_recursion($nb_ajout, $next[0]),
            $next[1]),
        $next[2]),
    $next[3]);

如果你能帮助我,我找不到解决方案。

【问题讨论】:

  • 为什么?如果你可以让它迭代,你就赢了啊啊啊递归非常重
  • 实际上这个函数非常简单,我将不得不使用深度可变的数组,我不会提前知道深度
  • 如果你能详细解释函数应该做什么,并提供一些输入和相应的期望输出,那将有很大帮助。 “我找不到解决方案” - 告诉我们你的尝试。
  • 我想我找到了一些东西,如果我的问题没有解决,我会回复你。谢谢

标签: php arrays recursion


【解决方案1】:

这样的事情可以解决问题......

function resolution_recursion($tab1, $tab2, $solution = [])
{
    if (empty($tab2)) {
        return $solution;
    }
    
    $set = array_shift($tab2);
    
    foreach($set as $nb2){
        foreach($tab1 as $nb1){
            if(($nb2 + $nb1)%2 != 1){
                $solution[] = $nb2 + $nb1;
            }
        }
    }

    if (!empty($tab2)) {
        return resolution_recursion($tab1, $tab2, $solution);
    }

    return $solution;
}

你可以找到一个演示 here(但是输出对我来说绝对没有任何意义,所以希望它对你有意义,哈哈)

【讨论】:

    【解决方案2】:

    我想我找到了一些东西,而不是使用递归:

    function resolution_recursion($tab1, $tab2){
        $solution = [];
        $solution[-1] = $tab1;
        foreach($tab2 as $key => $tab){
            foreach($tab as $nb2){
                foreach($solution[$key-1] as $nb1){
                    if(($nb2 + $nb1)%2 != 1){
                        $solution[$key][] = $nb2 + $nb1;
                    }
                }
            }
        }
        return $solution;
    }
    

    【讨论】:

      猜你喜欢
      • 2017-02-13
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      • 1970-01-01
      相关资源
      最近更新 更多