簡體   English   中英

使用數組創建遞歸 function

[英]Create a recursive function with an array

我有一個 function 但無法成功使其遞歸。 這是我的 function 沒有遞歸:

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]);

如果你能幫助我,我找不到解決方案。

像這樣的東西會做的伎倆...

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;
}

你可以在這里找到一個演示(output 但是對我來說絕對沒有任何意義,所以希望它對你有意義,哈哈)

我想我找到了一些東西,而不是使用遞歸:

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM