gpt4 book ai didi

performance - 为什么scalac在某些场景下不能优化尾递归?

转载 作者:行者123 更新时间:2023-12-04 06:12:47 26 4
gpt4 key购买 nike

为什么 scalac(Scala 编译器)不优化尾递归?

演示这一点的代码和编译器调用:

> 猫 foo.scala
类Foo {
def ifak(n: Int, acc: Int):Int = {
如果 (n == 1) 加起来
否则 ifak(n-1, n*acc)
}
}

> scalac foo.scala
> jd-gui Foo.class
导入scala.ScalaObject;

公共(public)课 Foo
实现 ScalaObject
{
公共(public) int ifak(int n, int acc)
{
返回((n == 1)?acc:
ifak(n - 1, n * acc));
}
}

最佳答案

可以被覆盖的方法不能是尾递归的。试试这个:

class Foo {
private def ifak(n: Int, acc: Int): Int = {
if (n == 1) acc
else ifak(n-1, n*acc)
}
}

关于performance - 为什么scalac在某些场景下不能优化尾递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1699376/

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