數列從第三項開始,每一項都等於前兩項之和。
F0=0,F1=1,Fn=F(n-1)+F(n-2)
遞歸版和非遞歸版。
php function fib($n){ $array = array(); $array[0] = 1; $array[1] = 1; for($i=2;$i<$n;$i++){ $array[$i] = $array[$i-1]+$array[$i-2]; } print_r($array); } fib(10); echo "\n------------------\n"; function fib_recursive($n){ if($n==1||$n==2){return 1;} else{ return fib_recursive($n-1)+fib_recursive($n-2); } } echo fib_recursive(10); ?> <?php function fib($n){ $array = array(); $array[0] = 1; $array[1] = 1; for($i=2;$i<$n;$i++){ $array[$i] = $array[$i-1]+$array[$i-2]; } print_r($array); } fib(10); echo "\n------------------\n"; function fib_recursive($n){ if($n==1||$n==2){return 1;} else{ return fib_recursive($n-1)+fib_recursive($n-2); } } echo fib_recursive(10); ?>
作為C和java的程序猿,在第一次在寫非遞歸的時候,忘記了變量前加$,悲催。
輸出結果
Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 3 [4] => 5 [5] => 8 [6] => 13 [7] => 21 [8] => 34 [9] => 55 ) ------------------ 55 Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 3 [4] => 5 [5] => 8 [6] => 13 [7] => 21 [8] => 34 [9] => 55 ) ------------------ 55