建议PHPer慎用递归

不多说,看代码:

<?php
/* 求斐波那契数列中的第n个数 */

/**
 * 用递归的方法
 */
function f($x = 1) {
    return ($x > 2) ? (f($x - 1) + f($x - 2)) : 1;
}

/**
 * 常规方法
 */
function g($i = 1) {
    $x = $y = $z = 1;
    if ($i > 2) {
        $j = 3;
        while ($j <= $i) {
            $x = $y;
            $y = $z;
            $z = $x + $y;
            $j ++;
        }
    }
    return $z;
}

// 开始执行
set_time_limit(0);
$t = microtime(true);

// echo f(40);
// 结果: 第40数 -> 102334155 -> 费时127.708643913秒

// echo g(40);
// 结果: 第40数 -> 102334155 -> 费时5.19752502441E-5秒

echo (microtime(true) - $t);

你可能感兴趣的:(PHP,递归,斐波那契)