有点朋友可能跟我刚开始一样,不明白斐波那契数列是什么鬼
下面我来简单说一下
斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…
这个数列从第3项开始,每一项都等于前两项之和
这样我们大概就明白了他是一个什么玩意了
个人不建议用递归,不解释,直接上循环的代码
for ($i = 1; $i <= 20; $i++) {
$a = b($i);
var_dump($a);
}
var_dump(a(20));
/**
* 让人不明觉厉的斐波那契数列计算
* @param int $n 数列长度
* @return array 返回的是一个数组
*/
function a($n) {
$arr = [];
if ($n <= 0) {
return $arr;
}
$arr[] = 1;
if ($n > 1) {
$arr[] = 1;
}
for ($i = 2; $i < $n; $i++) {
$arr[$i] = $arr[$i - 2] + $arr[$i - 1];
}
return $arr;
}
/**
* 让人不明觉厉的斐波那契数列计算
* @param int $n 数列位置
* @return int 返回的是一个数
*/
function b($n) {
if ($n <= 0) {
return null;
} elseif ($n < 3) {
return 1;
}
$arr = [1, 1];
for ($i = 2; $i < $n; $i++) {
$res = $arr[$i] = $arr[$i - 2] + $arr[$i - 1];
}
return $res;
}