【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。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值