//参数按第几位算,零是第一位,第九位21。 //0, 1, 1, 2, 3, 5, 8, 13,21 //For非递归方式 echo Fibonacci_netpc(9); echo Fibonacci_R(9); function Fibonacci_netpc($n) { if ($n > 2) { $o = 0; $t = 1; for ($i = 4; $i <= $n; $i++) { //调换保存最后2位累加位置 $temp = $o + $t; $o = $t; $t = $temp; } return $t + $o; } else { return $n - 1; } }
//递归方式 function Fibonacci_R($n) { if ($n < 3) return $n - 1; if ($n == 3) return 1; return Fibonacci_R($n - 1) + Fibonacci_R($n - 2); }