用php实现斐波那契数列

//1 1 2 3 5 8 13 ....
//观察数列 你会发现下一个数是如何得来的
//  f(3) = f(2) + f(1)      f(4)=f(3)+f(2)           f(18)=f(17)+f(16)
//    2 = 1 + 1                 3 = 2 + 1            f($n) = f($n-1) + f($n-2)
//问第18位是多少

======================

function f($n){
if($n<3)return 1;
return f($n-1) + f($n-2);
}

echo f(18);

 

=====================

 

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 f3($n){
	return (pow((1+sqrt(5))/2,$n) - pow((1-sqrt(5))/2,$n))/sqrt(5);
}

$num = $_GET['num'];

echo f3($num);
echo '<br/>';
echo f2($num);

三种方式、

第一种遍历的样式,数值大的话  会卡爆

第二种 第三种 速度比较快

第三种是一种公式的缩写  

 

 

posted @ 2015-08-07 16:48  __Rain丶  阅读(882)  评论(0编辑  收藏  举报