关于 Tail Calls Optimization

来源:互联网 发布:java multimatchquery 编辑:程序博客网 时间:2024/06/17 21:19

关于Tail Calls Optimization,中文资料不是很多。但这也不是很难的概念。

所谓Tail Call,就是指一个函数返回的值,为另一个函数的返回值。例子如下

 

foo()中调用函数bar()产生的栈空间是多余,所以支持Tail Call Optimization的编译器都能优化此过程,消除多余的栈操作。

 

关于算 factorial ,代码如下:

严格意义上来说,并不是tail call,但是GCC竟然能神奇地将它优化成一个递推式!而VC,ICC,pgcpp都不能做到这样的优化。

 

看来确实是,不同编译器有自己的强项。

原创粉丝点击