php实现斐波那契数列

数列从第三项开始,每一项都等于前两项之和。

F0=0,F1=1,Fn=F(n-1)+F(n-2)

递归版和非递归版。

[php]view plaincopy

  1. <?php
  2. function fib($n){
  3. $array = array();
  4. $array[0] = 1;
  5. $array[1] = 1;
  6. for($i=2;$i<$n;$i++){
  7. $array[$i] = $array[$i-1]+$array[$i-2];
  8. }
  9. print_r($array);
  10. }
  11. fib(10);
  12. echo "\n------------------\n";
  13. function fib_recursive($n){
  14. if($n==1||$n==2){return 1;}
  15. else{
  16. return fib_recursive($n-1)+fib_recursive($n-2);
  17. }
  18. }
  19. echo fib_recursive(10);
  20. ?>

作为C和java的程序猿,在第一次在写非递归的时候,忘记了变量前加$,悲催。

输出结果

[php]view plaincopy

  1. Array
  2. (
  3. [0] => 1
  4. [1] => 1
  5. [2] => 2
  6. [3] => 3
  7. [4] => 5
  8. [5] => 8
  9. [6] => 13
  10. [7] => 21
  11. [8] => 34
  12. [9] => 55
  13. )
  14. ------------------
  15. 55