【发布时间】:2013-01-10 15:48:14
【问题描述】:
通过这个问题: Does PHP optimize tail recursion?
php不会优化尾递归
但是当我在我的机器上尝试时,(php 5.3.10)
斐波那契的两个程序:一个是正常递归,另一个是尾递归
使用的时间程序差别很大:
我对此感到困惑,谁能告诉我为什么尾递归比普通递归更快,如果php没有优化它?
斐波那契.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));
【问题讨论】:
-
请显示两个脚本的源代码。
-
嗨,我已经为此添加了脚本
标签: php