C ++代码中的尾递归优化

时间:2011-10-05 06:40:08

标签: c++ tail-recursion

我希望看到尾递归优化的影响,并希望以尾递归优化的方式编写简单的阶乘函数。 是否可以在没有编译器支持的代码中执行此操作?

2 个答案:

答案 0 :(得分:3)

编译器执行优化。因此,如果没有编译器支持,就无法对其进行测试。

在代码中执行此操作的唯一方法是通过迭代替换递归(但当然会丢失递归)。

答案 1 :(得分:2)

尾递归优化将具有尾递归属性的函数转换为迭代,在没有编译器支持的情况下执行它,你必须进行递归 - >手动迭代。请注意,您可能会失去代码的可读性(递归函数往往更短,更容易理解),并且需要进行大量的代码更改(从而将您的大脑内容转化为内部)。如果我需要这样做,我通常会将原始递归函数放在转换后的迭代版本之上的注释中。