gpt4 book ai didi

c++ - 递归函数是否有部分尾调用优化?

转载 作者:行者123 更新时间:2023-11-30 05:19:52 24 4
gpt4 key购买 nike

如何在 g++ 上对不完全尾递归的函数进行尾调用优化?

例如:

void foo(Node *n) {
if (n == nullptr) return;

foo(n->left);
cout << n->datum;
foo(n->right);
}

这是 foo(n->left) 不是尾递归,但 foo(n->right) 是。有没有办法优化这个?

最佳答案

答案是:问问你的编译器,非常好。

C++ 规范允许编译器实现任何优化,只要可观察的结果保持不变。

在所示代码中,部分尾部优化显然会产生相同的可观察结果。它是否真的发生,完全取决于你的编译器。 C++ 规范不要求编译器在这里执行尾部优化,但也不禁止它。这完全取决于您的编译器,现代 C++ 编译器很可能会在足够积极的优化级别上执行此操作。

关于c++ - 递归函数是否有部分尾调用优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40954662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com