通过这个问题: PHP 是否优化尾递归?
php不会优化尾递归
但是当我在我的机器上尝试时,(php 5.3.10)
两个斐波那契程序:一个是正常递归,另一个是尾递归
使用的时间程序有很大不同:
我对此感到困惑,谁能告诉我为什么尾递归比普通递归快,如果php没有优化它?</p>
斐波那契.php:
<?php
function fibonacci($n) {
if ($n < 2) {
return $n;
}
return fibonacci($n - 1) + fibonacci($n - 2);
}
var_dump(fibonacci(30));
fibonacci2.php:
<?php
function fibonacci2($n, $acc1, $acc2) {
if ($n == 0) {
return $acc1;
}
return fibonacci2($n-1, $acc2, $acc1 + $acc2);
}
var_dump(fibonacci2(30, 0, 1));