使用下一个数值方法xi + 1 =(1/2)*(xi +(A / xi))编写函数sqrt(A)以计算正实数的平方根。其中A-输入里亚尔号码; 在零迭代中,采用下一条语句:x0 = A; 错误至少应为10 ^ -6
答案 0 :(得分:0)
看起来您的要求不仅仅是查找数字的平方根。如果有需要,请使用Math.sqrt。
如果您的需求是实现用于查找平方根的函数以用于教学目的,则需要编写如下的递归函数。根据需要修改代码以支持10 ^ -6
的错误
function sqrt(A, i = 0) {
if (i === 0)
return A;
let prev = sqrt(A, i - 1);
return 0.5 * (prev + (A / prev));
}
console.log(sqrt(2,1000));
console.log(sqrt(3,1000));
console.log(sqrt(9,1000));
console.log(sqrt(25,1000));
答案 1 :(得分:0)
您可以取最后一个值x i-1 并将其与新值x i 进行比较,而不使用循环计数器。
function sqrt(a, x = 1) { // take 1 for x(0) as start value for recursion
var y = (x + a / x) / 2; // prepare next value x(i+1)
if (x === y) { // exit condition
return x;
}
return sqrt(a, y); // tail call optimization
} // https://stackoverflow.com/q/310974/1447675
console.log(sqrt(2));
console.log(sqrt(10));
console.log(sqrt(9));
console.log(sqrt(25));