原文来自博客园,把代码全部翻译成了PHP的,因为这些东西对PHP同样适用。
函数递归调用是很常见的做法,但是它往往是低效的,本文探讨优化递归效率的思路。
1.尾递归转换成迭代
尾递归是一种简单的递归,它可以用迭代来代替 比如 求阶乘函数的递归表达
PHP代码
- <?php
- function f( $n = 0)
- {
- if($n<=0)return 1;
- return $n*f($n-1);
- }
- ?>
可以转换成完全等价的循环迭代
PHP代码
- <?php
- function f($n = 0)
- {
- $r=0;
- while( $n-- > 0)
- $r *= $n;
- return $r;
- }
- ?>
尾递归是最简单的情形,好的编译器甚至可以自动的识别尾递归并把它转换成循环迭代。
更多看详细
» 阅读全文