php怎么做斐波那契数
时间 : 2023-02-24 08:36:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
斐波那契数列 又称为黄金分割数列,它是由意大利数学家斐波那契于13世纪时献给世界的一个数学问题。斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)。
在PHP里面,用直接递推实现斐波那契数列的原理是:把要计算的数字n作为变量a的初始值,a=n,将最后的结果赋值给变量b,用b来记录不断递推中的结果。程序运行时,首先把a的值记录并放入变量a_temp,再将a的值加上b的值,把结果保存到a里,最后将a_temp的值保存到b里,完了一次循环后就把a的值打印出来。
下面是php实现斐波那契数列的代码:
<?php
$a = 1;
$b = 1;
for($i=0;$i<$n;$i++)
{
echo $a.' ';
$a_temp = $a;
//F(n)=F(n-1)+F(n-2)
$a = $a + $b;
$b = $a_temp;
}
?>
上面代码就是使用PHP来实现斐波那契数列的方法,非常简单易懂,在PHP中,可以用来计算任何一个数字的斐波那契数。通过使用这些算法,可以在给定的时间内得到最优的结果。
斐波那契数列(Fibonacci sequence)又称黄金分割数列、因数学家列昂纳多•斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:
F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
用php实现斐波那契数列,方法非常多, 将常见几种方法介绍如下:
1、for循环法
<?php
function Fibonacci($n) {
$data = array();
for($i = 0;$i < $n;$i++) {
if($i == 0)
$data[$i] = 0;
elseif($i == 1 || $i == 2)
$data[$i]=1;
else
$data[$i] = $data[$i-1] + $data[$i-2];
}
return $data;
}
$arr = Fibonacci(10);
echo implode(',',$arr);
?>
2、递归法
<?php
function Fibonacci($n){
if($n == 0)
return 0;
elseif($n == 1)
return 1;
else
return Fibonacci($n-1) + Fibonacci($n-2);
}
$arr = array();
for($i = 0;$i < 10;$i++)
$arr[$i] = Fibonacci($i);
echo implode(',',$arr);
?>
3、函数闭包
<?php
function Fibonacci($n){
$fn = 0;
return function() use(&$fn,$n){
if($n > 0){
if ($fn == 0){
$fn = 1;
return 0;
}elseif($fn == 1 || $fn == 2){
$fn--;
return 1;
}else{
$m = $fn;
$fn = $m + $fn -1;
return $m;
}
}
};
}
$arr = array();
$getF = Fibonacci(10);
for($i = 0;$i < 10;$i++)
$arr[$i] = $getF();
echo implode(',',$arr);
?>
4、尾递归
<?php
function Fibonacci($n, $a = 0, $b = 1){
if ($n >= 1){
return Fibonacci($n - 1, $b, $a + $b);
} else {
return $a;
}
}
$arr = array();
for($i = 0;$i < 10;$i++)
$arr[$i] = Fibonacci($i);
echo implode(',',$arr);
?>
结论:以上就是用php来实现斐波那契数列最常用的4种方法,每种方法都有它的优势,选择哪
上一篇
php两个日期相差怎么办
下一篇
php怎么转换成年月日
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章