我试图理解函数递归,但我被困在我拥有的一个片段上。我完全理解你一遍又一遍地调用直到数字匹配 1 的阶乘示例,但这里的问题是,首先执行什么?foreach 循环还是递归调用?
这是片段:
例如,给定初始字符串 'abc' ,这将是调用 foreach 循环时第一次执行的值( permute($str) as $permutation )?
function permute($str)
{
if (strlen($str) < 2)
{
return array($str);
}
$permutations = array();
$tail = substr($str, 1);
foreach (permute($tail) as $permutation)
{
$length = strlen($permutation);
for ($i = 0; $i <= $length; $i++)
{
$permutations[] = substr($permutation, 0, $i) . $str[0] . substr($permutation, $i);
}
}
/* Return the result */
return $permutations;
}