我有以下递归函数:
$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);
Run Code Online (Sandbox Code Playgroud)
显然我做错了,因为我的功能一直在继续.我无法弄清楚为什么......我是PHP中的递归函数的新手,所以对此解决方案的任何帮助将不胜感激.有一个安全网的最佳方法是什么,所以我的PHP函数不能永远运行任何递归函数?
它不会停止,因为它recursive是一个无限循环.你写过:
function recursive($placement) {
// Code that doesn't return, and outputs text
recursive($placement);
}
Run Code Online (Sandbox Code Playgroud)
你为什么期望永远终止?
任何递归函数都需要有一些最终证明为真的条件,并且在证明为true时将终止递归.
您的浏览器处于冻结状态,因为您的PHP脚本发送给它的大量输出可能很难.
大多数PHP安装最终将终止运行时间过长的脚本.但是,如上所述,如果必须处理来自无限循环的大量输出,则浏览器可能会遇到困难.