斐波那契数列
斐波那契数列(意大利语:Successione di Fibonacci),又译为菲波拿契数列、菲波那西数列、斐氏数列、黄金分割数列。数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。
在数学上,斐波那契数列是以递归的方法来定义:
- F(0)=0
- F(1)=1
- F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
斐波那契数列由0和1开始,之后的斐波那契数就是由之前的两数相加而得出。首几个斐波那契数是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233……
特别指出:0不是第一项,而是第零项。
代码
<?php
/**
* 斐波那契数列(非递归)
* $n 数组个数
* $arr 返回的数组
*/
function fib($n){
//数组第一个元素为0
if($n<=0){
return 0;
}
//数组第二个元素和第三个元素为1
$arr[2] = $arr[1] = 1;
//数组第四个元素开始循环
for($i = 3; $i <= $n;$i++){
//当前数等于前面两个书相加
$arr[$i] = $arr[$i-1] + $arr[$i-2];
}
return $arr;
}
/**
* 斐波那契数列(递归)
* $n 元素索引
*/
function fibRecursive($n){
if($n<=0) return 0;
if($n == 1 || $n == 2){
return 1;
}
return fibRecursive($n-1) + fibRecursive($n-2);
}
echo '<pre>';
print_r(fib(10));
print_r(fibRecursive(10));