如何不用 Math 类,实现开根号 3?

2016-09-22 13:38:27 +08:00
 doublleft
昨天面试遇到的一个问题, JS 的话不用 Math 类实现开根号 3 ,感觉很有意思,梯除吗?
4935 次点击
所在节点    程序员
19 条回复
yuankui
2016-09-22 13:39:18 +08:00
可以看看 Math 的实现。。
yuankui
2016-09-22 13:40:42 +08:00
是在不行,可以考虑二分法
lloovve
2016-09-22 13:41:17 +08:00
多大数据?快的话查表,逼近等都行
ovear
2016-09-22 13:42:04 +08:00
泰勒逼近
saberlion
2016-09-22 13:42:23 +08:00
牛顿迭代法
MForever78
2016-09-22 13:44:10 +08:00
高数就可以,没什么有意思的吧...

https://zh.m.wikipedia.org/wiki/牛顿法
doublleft
2016-09-22 13:46:53 +08:00
@lloovve JS 面试题,还查表…
jininij
2016-09-22 13:47:51 +08:00
```
var sqrt = function(m){
if(1===m)
return 1;
if(0===m)
return 0;
if(m<0)
return NaN;
var s=m/2;
var last;

while(last!=s){
last=s;
s=1/2*(s+m/s)
}
return s;
}
```
tabris17
2016-09-22 13:51:36 +08:00
泰勒级数展开
crystom
2016-09-22 13:56:03 +08:00
8 楼是比较快能收敛的
darkbread
2016-09-22 14:11:32 +08:00
牛顿法吧
bluedestination
2016-09-22 14:26:27 +08:00
二分法,牛顿法,卡马克快速开平方法
wizardoz
2016-09-22 14:28:30 +08:00
牛顿法求方根
NARUTOzp
2016-09-22 14:32:31 +08:00
@doublleft 啥, js 面试题???涨姿势 qwq
lqs
2016-09-22 14:33:23 +08:00
x**(1/3)
timi
2016-09-22 14:35:34 +08:00
var sqrt3=1.7320508075689;
JerryV2
2016-09-22 19:09:38 +08:00
卡马克+1
mingyun
2016-09-22 22:25:20 +08:00
@lqs es6 才支持吧
ipwx
2016-09-23 00:00:31 +08:00
现在的程序员高数一点都不会吗。。。

```python
def sqrt(a, eps=1e-10):
if a == 0.0 or a == 1.0:
return a
x = 1.0
y = x - (x*x-a)/(2*x)
while not (-eps < y-x < eps):
x = y
y = x - (x*x-a)/(2*x)
return x
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/308125

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX