php递归函数返回数组

标签 php arrays recursion return

这是原始函数(递归函数):

function permute($items, $perms = array()) 
{
    if (empty($items)) 
    { 
        echo join('', $perms).'<br>';
    }  
    else 
    {
        for ($i = 0; $i < count($items); ++$i) 
        {
             $newitems = $items;
             $newperms = $perms;
             $foo = implode(array_splice($newitems, $i, 1));
             array_unshift($newperms, $foo);
             permute($newitems, $newperms);
        }
    }
}
permute(array("A", 'B', 'C'));

在这种情况下,输出将是:

cba
bca
cab
acb
bac
abc

如何修改这部分:

if (empty($items)) 
{ 
    echo join('', $perms).'<br>';
} 

将其更改为返回字符串数组,而不是直接在函数中 echo ?

最佳答案

试试这个(IdeOne example):

function permute($items, $perms = array(), $result = array()) 
{
if (empty($items)) 
{ 
    $result[] = join('', $perms);
}  
else 
{
    for ($i = 0; $i < count($items); ++$i) 
    {
         $newitems = $items;
         $newperms = $perms;
         $foo = implode(array_splice($newitems, $i, 1));
         array_unshift($newperms, $foo);
         $result = permute($newitems, $newperms, $result);
    }
}
return $result;
}
$bar = permute(array("A", 'B', 'C'));

var_dump($bar);

关于php递归函数返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28712341/

相关文章:

php - 在按下提交按钮之前提交数据的表单

java - 如何用用户输入的值填充二维数组?

arrays - 如何为具有不同参数的函数声明函数指针数组?

c++ - 从二进制列表中获取十进制数的递归函数

c# - 在 C# 中使用 Task<List<Task>> 进行异步递归操作

c++ - 简单递归题

php - 如何仅在悬停摘录的图片帖子上显示 wordpress 帖子摘录

php - PHP 代码或 CSV 文件缺少什么?

php - 在 MySQL 中制作一个可靠的计数器

c++ - 使用具有不同大小的第二行 C++ 的二维数组