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种方法,每种方法都有它的优势,选择哪