并且这种 Through trampolining 的尾递归优化,未必由编程语言本身(编译器 / 运行时)提供,一些灵活性比较强的语言本身就能实现这个过程。比如这里有一段使用 CPython 的实现代码。这段代码全文如下(稍微修改了一下,以便能够在 Python3 下运行): #!/usr/bin/env python3 # This program shows off a python decorat...
Notice that thus far, of course, I’ve made no use the fact that I’m constantly recalculating the intemediate values from 1 to n. If those values were cached, of course, I could save myself a lot of computations. One way to do this is to use recursion, but if we’ve already ca...