提问人:duong_dajgja 提问时间:4/24/2023 更新时间:4/24/2023 访问量:57
是否依赖于尾调用(包括尾递归)编译器/实现?
Is tail call (including tail recursion) compiler/implementation dependent?
问:
在互联网上搜索时,我偶然发现了编译器如何知道递归是否是尾递归,以及它如何优化尾递归。如果我理解正确的话,那么尾递归比非尾递归快的原因是编译器不会为新函数调用创建堆栈帧。那么它依赖于编译器,对吧?是否始终保证在所有语言的所有编译器上?另外,如果它依赖于编译器,那么为什么很多人一直称它为“算法”?tail recursion
答:
0赞
DannyNiu
4/24/2023
#1
是的,尾部调用(递归或非递归)优化取决于实现。不,如果编译器还不够智能,它将无法检测到至少一些尾部调用。
评论