zoukankan      html  css  js  c++  java
  • 用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);
    

    三种方式、

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

    第二种 第三种 速度比较快

    第三种是一种公式的缩写  

     

  • 相关阅读:
    bzoj4033
    bzoj 1197
    bzoj 1196
    bzoj 1195
    bzoj 1194
    bzoj 1193
    bzoj 1192
    jvm系列(一):java类的加载机制
    红黑树之 原理和算法详细介绍
    TreeMap详细介绍(源码解析)和使用示例
  • 原文地址:https://www.cnblogs.com/rainblack/p/4711277.html
Copyright © 2011-2022 走看看