数列从第三项开始,每一项都等于前两项之和。
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