如何让一个递归函数的速度快的超乎你想象
递归很明显的问题就是存在大量的重复计算,而就是这些重复记算大大增加了程序的程序的运行速度,所以优化的重点就在于这些重复记算上面。具体看代码
for($i=0;$i<96;$i++){ echo recursion($i).'<hr/>'; }
function recursion($n){ static $list=[];//建立一个数组保存上一次记算的结果 if(isset($list[$n])){//判断数组内是否存有这次记算的值 $res=$list[$n]; return $res; } //下面是正常递归函数 if($n<=1){ $res=1; }else{ $res= recursion($n-1)+ recursion($n-2); } $list[$n]=$res; return $res; }
整段代码的核心就在那段数组处理上面。