Scala中错误执行的斐波那契序列

问题描述 投票:2回答:3

[在Scala聚会上,我们正在讨论做事的“ Scala方法” ...

有人问另一个开发人员,他/她将如何在Scala中实现Fibonacci序列。该人回答了以下代码(只是被告知,虽然它起作用,但它不是最佳的:]

def fibonacci(n: Int):BigInt = n match {
    case 0 => 0
    case 1 => 1
    case _ => fibonacci(n - 1) + fibonacci(n - 2)
}
  1. 此方法有什么问题?

  2. 改进此代码的方法是Scala方法吗?

scala fibonacci
3个回答
2
投票

该功能的问题,如所描述的是非尾递归调用。这意味着此处涉及的递归需要一个堆栈才能工作(在您的示例中,它是call stack

)。换句话说,该功能大致等同于:

1
投票

这将多次计算许多子问题。您可以将算法视为一棵树。


0
投票

对象FibonacciSequence {

© www.soinside.com 2019 - 2024. All rights reserved.