算法之斐波纳契数列递归和迭代实现

//在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2)
//迭代的实现
$s[0] = 0;
$s[1] = 1;
for ($i = 2; $i < 100; $i++){
$s[$i] = $s[$i-1]+$s[$i-2];
}
var_dump($s);
//递归实现

function fib($i){
if($i < 2){
return $i == 0 ? 0 : 1;
}
return fib($i-1) + fib($i-2);
}
var_dump(fib(40));


在开发过程中尽量少用递归,由于递归在计算过程中有栈堆的消耗,效率远远没有迭代快,大家可以测试一下,上面的递归实现是获取的某一项的值,如果想和第一种的迭代实现,大家可以修改一下,传一个数组进来即可
posted @ 2018-02-09 14:20  子禅  阅读(249)  评论(0编辑  收藏  举报