非递归写法:
function fbnq($n){ //传入数列中数字的个数
if($n <= 0){
return 0;
}
$array[1] = $array[2] = 1; //设第一个值和第二个值为1
for($i=3;$i<=$n;$i++){ //从第三个值开始
$array[$i] = $array[$i-1] + $array[$i-2];
//后面的值都是当前值的前一个值加上前两个值的和
}
return $array;
}
function f2($n){
$num1 = $num2 = $temp = 1; for($i=2;$i<$n;$i++){//1 1 2 3 5 8 13 .... $temp = $num1 + $num2; //$temp = 2 $num1 = $num2; //$num1 = 1 $num2 = $temp; //$num2 = 2 } return $temp;}递归写法:
function fbnq($n){
if($n <= 0) return 0;
if($n == 1 || $n == 2) return 1;
return fbnq($n - 1) + fbnq($n - 2);
}
原文:https://www.cnblogs.com/timor0101/p/12862529.html