方式一:循环的方式
/** * 使用循环的方式 * 0 1 1 2 3 5 8 13 21 */ function fib1($n) { $arr = [0, 1, 1]; for ($i = 3; $i <= $n; $i++) { $arr[$i] = $arr[$i - 1] + $arr[$i - 2]; } return $arr[$n]; }
方式二:递归的方式
/** * 使用递归的方式 */ function fib2($n) { if ($n == 0) { return 0; } if ($n == 1 || $n == 2) { return 1; } return fib2($n - 1) + fib2($n - 2); }