javascript - 巴比伦平方根算法——初始猜测值

标签 javascript algorithm math

我一直在寻找用 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 参数。

最佳答案

估计 是在迭代函数内部定义的。

函数第一次运行时,调用迭代函数,参数为numreturn iteration(num)

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

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

return iteration(improvePrecision(estimation));

所以 iteration 是递归函数,除非估计足够精确,否则它将调用自身:(isPrecise(estimation))

关于javascript - 巴比伦平方根算法——初始猜测值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46024310/

相关文章:

java - 用于收集数学 vector 的良好 Java 类

javascript - 无法提交表格

algorithm - 游戏服务器 : Packet Analyzation

java - 圆内随机点方法不均匀分布

algorithm - 可变运动趋势的签名

php - 如何创建 Sierpinski 三角形(分形)?

javascript - 使用 Math.random 从 JavaScript 中的有限字符集生成随机集

javascript - 从 javascript 对象的属性中获取键名

javascript - jQuery - 在文本区域内插入一个字符串,然后选择它的一部分

javascript - JQuery 未从 PHP echo 运行