Go中的尾部呼叫优化

到目前为止,Go编程语言是否优化了尾部调用?如果不是,它是否至少优化了函数对自身的尾递归调用?


呼啦一阵风
浏览 194回答 3
3回答

精慕HU

在Internet上可以找到的所有内容,“ Go在某些情况下都支持可尾递归”,这在邮件列表中已说明:在某些情况下,它已经以6g / 8g的形式存在,而在gccgo中则更为普遍。我们目前不打算更改语言以要求编译器在所有情况下均实现尾部调用优化。如果必须进行尾部调用,则可以使用循环或goto语句。为了得到这些情况,您最好深入研究golang source,它是开放的。

呼如林

它不是。根据邮件列表上的核心开发团队的说法,也没有任何计划。

慕娘9325324

扩展@Rostyslav的出色答案。如果必须进行尾部调用(在此示例中为尾部递归调用),则可以执行以下操作。package mainimport "fmt"func tail(i int) {    if i == 0 {        return    } else {        fmt.Println(i)        tail(i - 1) //tail recursive call    }}func main() {    tail(3) //3, 2, 1}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go