首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >巴比伦平方根算法-初值猜测

巴比伦平方根算法-初值猜测
EN

Stack Overflow用户
提问于 2017-09-03 14:15:04
回答 1查看 307关注 0票数 0

我正在寻找用JavaScript编写的巴比伦平方根算法,并找到了这个解决方案:

代码语言:javascript
运行
复制
function sqrt(num) {
  var accuracy = 0.000001;

  function isPrecise(estimation) {
    if (Math.abs( Math.pow(estimation, 2) - num ) < accuracy) {
      return true
    } else {
      return false
    }
  }

  function improvePrecision(estimation) {
    return (estimation + (num / estimation)) / 2;
  }

  function iteration(estimation) {
    if(isPrecise(estimation)) {
      return estimation;
    } else {
      return iteration(improvePrecision(estimation));
    }
  }

  return iteration(num);
}

但我看不出初始猜测(在代码-estimation中)是在哪里定义的。那么,当第一次迭代没有猜测值时,它是如何工作的呢?实际上,这个值应该是num参数的等价物。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-03 14:31:48

estimation是在迭代函数中定义的。

当函数第一次运行时,使用num参数return iteration(num)调用迭代函数。

iteration函数中,算法首先检查估计是否正常。

如果没有,则再次调用iteration,但这一次,它首先改进给定的estimation

return iteration(improvePrecision(estimation));

因此,iteration是递归函数,除非估计足够精确,否则它会自动调用:(isPrecise(estimation))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46024310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档