【发布时间】:2013-09-17 23:29:01
【问题描述】:
我试图理解函数递归,但我被困在我拥有的 sn-p 上。我完全理解阶乘示例,您一遍又一遍地调用直到数字匹配 1 但这里的问题是,首先执行什么? foreach 循环还是递归调用?
这里是sn-p:
例如,给定初始字符串 '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;
}
【问题讨论】: