平方根近似

问题描述 投票:0回答:1

我正试图解决这个挑战,但我不知道我的代码是错误的,还是挑战的措辞是错误的。算法说:

  1. 选择两个数字S,EX平方根必须在[S,E]间隔。
  2. 选择所需的精度e
  3. 当前区间的中间值M将是一个很好的近似值。
  4. 虽然[S,E]的区间大于e,但是: 找到当前区间M的中间值; if M^2 > xE = M,否则,S = M; 当我们的间隔长度小于e时,X = M的平方根。

我的代码产生一个无限循环:

e = 0.001; //I want square root of 10
n = "10";
x = parseInt(n);
E = (x / 2);
S = 1;
M = ((E - S) / 2);
tam = (E - S);
while (tam >= e) {
 console.log(M)
 if ((M * M) > x) {
   E = M;
 } else {
   S = M
 };
 M = ((E - S) / 2);
 tam = (E - S);
}
console.log(n + ": " + M);

谢谢

javascript node.js algebra
1个回答
1
投票

您没有正确找到间隔的中点。您应该添加ES并除以2而不是减去。

e=0.001; //I want square root of 10
   n="10";
   x=parseInt(n);
   E=(x/2);
   S=1;
   M=((E+S)/2);
   tam = (E-S);
   while(tam>=e){
       console.log(M)
       if ((M*M)>x){E=M;}else{S=M};
       M=((E+S)/2);
       tam = (E-S);
   }   console.log(n+": "+M);
© www.soinside.com 2019 - 2024. All rights reserved.