有人可以向我解释这个找到数字平方根的递归伪代码吗?我发现很难理解,因为我没有得到n,p和e输入的含义。谢谢。

if abs(e^2 - n) < p
    SR(n,p,e) = e
else
    SR(n,p,e) = SR(n,p,(e+n/e)/2)

(e begins at n)

最佳答案

n是您要求平方根的数字,e是对平方根的估计,p是您想要的精度,即您愿意承受的误差。该算法说:如果e与答案“足够接近”,即e ^ 2在n的p之内,则e是您要寻找的答案;否则,请尝试更好的估计(e + n / e)2。为什么会有更好的估计?如果e大于sqrt(n),则n / e小于sqrt(n),因此sqrt(n)将介于e和n / e之间,因此请尝试将e和n / e的平均值作为下一个估计。 (反之亦然,如果e小于sqrt(n))。

希望这可以帮助,

布鲁斯

关于java - 使用递归的平方根(牛顿算法),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19760159/

10-12 03:07