【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。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章