非递归写法:
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