// Square root, first version (Chapter 4, Scala by Example) def abs(x: Double) = if (x > 0.0) x else -x def square(x: Double) = x * x def improve(guess: Double, x: Double): Double = (guess + x / guess) / 2 def isGoodEnough(guess: Double, x: Double): Boolean = abs( square(guess) - x) < 0.001 def sqrtIter(guess: Double, x: Double): Double = { println( guess ) if ( isGoodEnough(guess, x)) guess else sqrtIter(improve(guess, x), x) } def sqrt(x: Double) = sqrtIter(1.0, x)