以下代码有效,但我不太了解参数如何映射到参数列表。请注意我是Scala新手。在Scala中递归地计算平方根
import Math.abs
val tolerance = 0.0001
def isCloseEnough(x: Double, y: Double) =
abs((x - y)/x)/x < tolerance
def fixedPoint(f: Double => Double)(firstGuess: Double) = {
def iterate(guess: Double): Double = {
val next = f(guess)
if (isCloseEnough(guess, next)) next
else iterate(next)
}
iterate(firstGuess)
}
def averageDamp(f: Double => Double)(x: Double) = (x + f(x))/2
def sqrt(x: Double) =
fixedPoint(averageDamp(y => x/y))(1.0)
sqrt(2.0)
上述sqrt
函数的主体是fixedPoint(averageDamp(y => x/y))(1.0)
其中
(y => x/y)
映射到averageDamp
功能的(f: Double => Double)
和
(1.0)
映射到fixedPoint
功能的(firstGuess: Double)
但
看起来没有映射到averageDamp
函数的(x: Double)
。
预先感谢您。
谢谢,现在我明白了。 – Eddie