1、递归算法实现,如下:
function getNum($n){
if($n == 0 || $n == 1){
return 1;
}
return getNum($n-1) + getNum($n-2);
}
代码简单,易懂,但是计算速度很慢,当getNum(50)的时候基本程序就会挂掉
第二种递归算法
function fn($a,$b,$n){
if($n > 1) {
return fn($a+$b,$a,$n-1);
}
return $a;
}
2、循环实现
function getNum2($n){
if($n == 0 || $n == 1){
return 1;
}
$arr[] = 1;
$arr[] = 1;
for($i = 2; $i <= $n; $i++){
$arr[$i] = $arr[$i - 1] + $arr[$i-2];
}
return $arr[$n];
}
代码相对难理解,运行速度快。