小编Kor*_*uay的帖子

带有 Stream 类型的 Scala 递归实现

我已经开始在 Coursera 上学习 Scala 并且有一些关于squareRootGuess实现的问题如下

我正在尝试实施标准来过滤sqrtGuess定义中的准确猜测,如下所示,但它给了我堆栈溢出错误。

def sqrtGuess(x: Double): Stream[Double] = { 
  def nextGuess(guess: Double): Double = (guess + x / guess)/2

  def isSufficient(guess: Double): Boolean = math.abs(x - guess*guess)/x < 0.001

  def guesses: Stream[Double] = 
    1 #:: guesses.map(nextGuess).filter(isSufficient)

  guesses
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我们在外部定义 isSufficientsqrtGuess并应用于sqrtGuess流,效果会很好。

def sqrtGuess(x: Double): Stream[Double] = { 
    def nextGuess(guess: Double): Double = (guess + x / guess)/2
    def guesses: Stream[Double] = 
        1 #:: guesses.map(nextGuess)
    guesses
}

def isSufficient(guess: Double, x: …
Run Code Online (Sandbox Code Playgroud)

recursion scala scala-streams

2
推荐指数
1
解决办法
94
查看次数

标签 统计

recursion ×1

scala ×1

scala-streams ×1