事实证明,尾递归在 php 中是没有任何优化效果的!C 中的尾递归在 C 中的尾递归优化是 gcc 编译器做的。在 gcc 编译的时候加上-O2 会对尾递归进行优化
我们可以直接看生成的汇编代码:(使用 gdb
, gcc –O2 factorial.c –o factorial; disass factorial)
未加-O2 生成的汇编:
加了 O2 优化的汇编: