php递归、尾递归计算阶乘
2016-12-16 09:43
274 查看
c语言有尾递归之说,可以立即释放内存,效率也比递归要高。
之前使用php做了测试,测试结果显示尾递归在php中并没有效果。
m2=332104;
m1=331944;
内存使用:160 b
m2=332104;
m1=331944;
内存使用:160 b
之前使用php做了测试,测试结果显示尾递归在php中并没有效果。
$t1 = microtime(true); //时间点1 $m1 = memory_get_usage(); //递归 function a($n,$t=1){ if ($n>1) { $t = a($n-1,$t*$n); } return $t; } //尾递归 function b($n,$t=1){ if ($n<=1) { return $t; }else { return b($n-1,$t*$n); } } //增加计算量 function _set($n=1,$x=10){ for ($i=0;$i<$x;$i++){ if ($n==1) { $a = a(170); }else{ $a = b(170); } } } //_set(1,400000); //调用递归 _set(2,400000); //调用尾递归 $t2 = microtime(true); $m2 = memory_get_usage(); function convert($size){ $unit=array('b','kb','mb','gb','tb','pb'); return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i]; } echo "用时(毫秒):".ceil(($t2-$t1)*pow(10,3)); echo "<hr>"; echo "m2=".$m2.";<br>m1=".$m1.";<br>内存使用:".convert($m2-$m1);
递归测试结果
用时(毫秒):34922m2=332104;
m1=331944;
内存使用:160 b
尾递归测试结果
用时(毫秒):33948m2=332104;
m1=331944;
内存使用:160 b
相关文章推荐
- PHP 5.3和5.2在递归、尾递归方面的性能测试_ideal
- 为什么用 递归 计算“阶乘”和“斐波那契数列”是不合适的?
- Java算法之递归算法计算阶乘
- 递归计算阶乘
- java算法 使用递归计算阶乘
- 计算阶乘(递归与迭代)
- 【Java】斐波那契数列(Fibonacci Sequence、兔子数列)的3种计算方法(递归实现、递归值缓存实现、循环实现、尾递归实现)
- 使用php递归计算目录大小
- php使用递归计算文件夹大小
- 递归计算阶乘
- 用递归计算阶乘咋不行呢?
- 递归计算阶乘
- 用循环和递归分别计算阶乘
- Java 递归、尾递归、非递归 处理阶乘问题
- ;递归求和;递归计算阶乘
- 为什么用 递归 计算“阶乘”和“斐波那契数列”是不合适的?
- 利用递归方法计算 阶乘
- 用递归计算阶乘
- 非递归计算阶乘
- Maximum function nesting level of '100' reached, aborting!--漫谈递归:PHP里的尾递归及其优化