【Scala】实现一个求平方根的算法

实现思路:采用牛顿迭代法,设y为x平方根的猜测值。此时如果(y+x/y)/2-y的绝对值小于一个足够小的浮点数时,y就约等于x的平方根,此时y足够接近x的平方根;如果不是,则用(y+x/y)/2作为新的猜测值,用递归再次进行计算。
代码:
(define abs(lambda(g)(if(< g 0) (- 0 g) g)))
(define asq(lambda(x y)(if(> (abs (- (/ (+ y (/ x y)) 2) y)) 0.00000000000001)
                         (asq x (/ (+ y (/ x y)) 2))
                         (/ (+ y (/ x y)) 2))))
一个函数abs是用来计算绝对值的,第二个函数asq则是急求平方根的,asq有2个参数,第一个参数为待求平方根的数x,第二个参数为第一次计算的猜测值,这里可以用1。

猜你喜欢

转载自blog.csdn.net/u012027644/article/details/53884182