递归方式

时间复杂度: O(2^n)

function fib($n){
    if( in_array($n, [0, 1]) ) return $n;
    return fib($n-1) + fib($n-2);
}

迭代方式

时间复杂度: O(n), 空间复杂度: O(1)

function fib($n){
    if( in_array($n, [0, 1]) ) return $n;
    $f0 = 0;
    $f1 = 1;
    $f2 = null;
    for($i=0; $i<$n; $i++){
        $f2 = $f0 + $f1;
        $f0 = $f1;
        $f1 = $f2;
    }
    return $f2;
}