我有以下递归函数:
$cogs = array('hello', 'how', 'are', 'you');
$wheels = array();
foreach($cogs as $cog)
{
$wheels[] = array($cog);
}
function recursive($placement){
$counter = count($placement);
$nword = '';
for($i = 0; $i < $counter; $i++) {
$nword .= $placement[$i][0];
echo $nword;
}
recursive($placement);
}
recursive($wheels);
显然我做错了,因为我的功能一直在继续。我无法弄清楚为什么......我是PHP中的递归函数的新手,所以对此解决方案的任何帮助将不胜感激。有一个安全网的最佳方法是什么,所以我的PHP函数不能永远运行任何递归函数?
答案 0 :(得分:5)
它不会停止,因为recursive
是一个无限循环。你写过:
function recursive($placement) {
// Code that doesn't return, and outputs text
recursive($placement);
}
为什么你希望永远终止?
任何递归函数都需要有一些最终证明为真的条件,并且在证明为true时将终止递归。
您的浏览器正在冻结,因为您的PHP脚本发送给它的大量输出可能很难。
大多数PHP安装最终会终止运行时间过长的脚本。但是,如上所述,如果必须处理来自无限循环的大量输出,您的浏览器可能会遇到困难。
答案 1 :(得分:0)
因为您没有停止条件。在你的函数中,每次打印相同的东西(数组中每个变量的第一个位置),之后你再次使用相同的输入调用相同的函数。