Recursion 递归函数的替代方法

Recursion 递归函数的替代方法,recursion,iteration,Recursion,Iteration,我一直致力于传销(多层次营销)应用。 下面是递归函数的代码片段(不是全部代码),我在初始阶段编写了该函数,并且它工作正常。但是现在MLM树太深,递归函数停止。它说超过了最大嵌套级别。我增加了嵌套函数调用级别几次,但现在我不想再增加了,因为我知道这不是正确的解决方案 有人能为我推荐一个替代代码(可能是迭代的)吗 <?php function findallpairs($username, $totalusers= 0) { $sql = "select username,package_id

我一直致力于传销(多层次营销)应用。 下面是递归函数的代码片段(不是全部代码),我在初始阶段编写了该函数,并且它工作正常。但是现在MLM树太深,递归函数停止。它说超过了最大嵌套级别。我增加了嵌套函数调用级别几次,但现在我不想再增加了,因为我知道这不是正确的解决方案

有人能为我推荐一个替代代码(可能是迭代的)吗

<?php
function findallpairs($username, $totalusers= 0)
{
$sql = "select username,package_id from tbl_user where 
    parent_id = '".$username."'      order by username";
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0)
{       
    while($row = mysql_fetch_array($result))
    {           
        $username = $row["username"];
        $totalusers++;

        $arrtmp = findallpairs($username, $totalusers);
        $totalusers = $arrtmp["totalusers"];
    }
}

$arrpoints["totalusers"] = $totalusers;

return $arrpoints;
}
?>

你要挖多深

day在您的sql数据库中创建了一个mutliway树。树是递归结构,递归代码自然适合

你可以使用我所说的准记忆

如果在DB结构中列出了子项,那么这应该很容易。为没有childrin的所有用户获取一个结果,将其值memioize到一个哈希或树中,键为用户ID,值为1。然后对每个用户(或memiozed条目的父项)进行大规模迭代,如果它的所有子项都有memiozed值,则将它们相加并将该值memiozed。重复迭代,直到找到根用户(没有父用户)


如果你没有孩子的记录,那很可能效率极低。

你要深入到什么程度

day在您的sql数据库中创建了一个mutliway树。树是递归结构,递归代码自然适合

你可以使用我所说的准记忆

如果在DB结构中列出了子项,那么这应该很容易。为没有childrin的所有用户获取一个结果,将其值memioize到一个哈希或树中,键为用户ID,值为1。然后对每个用户(或memiozed条目的父项)进行大规模迭代,如果它的所有子项都有memiozed值,则将它们相加并将该值memiozed。重复迭代,直到找到根用户(没有父用户)

如果你没有孩子的记录,那很可能效率很低