l*******2 发帖数: 36 | 1 就一题:
double sqrt(double d) |
x*******e 发帖数: 84 | |
q********c 发帖数: 1774 | 3 牛顿是比bin search快,但是如果不知道就是不知道,尤其是没学过数值分析的。
【在 x*******e 的大作中提到】 : 牛顿
|
M*******a 发帖数: 1633 | 4 用binary search逼近做法做的话会不会悲剧? |
q********c 发帖数: 1774 | 5 binary search应该就足够了。
【在 M*******a 的大作中提到】 : 用binary search逼近做法做的话会不会悲剧?
|
M*******a 发帖数: 1633 | 6 那看来FB店面不难啊
【在 q********c 的大作中提到】 : binary search应该就足够了。
|
q********c 发帖数: 1774 | 7 难不难也要看运气,呵呵。
【在 M*******a 的大作中提到】 : 那看来FB店面不难啊
|
b*******g 发帖数: 57 | 8 int sqrt(int d)可以用binary search
double sqrt(double d)也可以用吗?
【在 q********c 的大作中提到】 : binary search应该就足够了。
|
w*******e 发帖数: 395 | 9 ask the interviewer what accuracy he needs, then do binary search.
double sqrt(double d) {
assert(d>0);
if(d<1) return sqrt(d*100)/10.0;
double start=1.0, end = d;
double m = (start+end)/2.0;
while(abs(d-m*m)>epsilon) {
if(m*m
else end = m;
m = (start+end)/2.0;
}
return m;
}
【在 l*******2 的大作中提到】 : 就一题: : double sqrt(double d)
|
B*****g 发帖数: 34098 | 10 为啥要下面2行,直接double start=0.0, end = d不行吗?谢谢
: if(d<1) return sqrt(d*100)/10.0;
: double start=1.0, end = d;
【在 w*******e 的大作中提到】 : ask the interviewer what accuracy he needs, then do binary search. : double sqrt(double d) { : assert(d>0); : if(d<1) return sqrt(d*100)/10.0; : double start=1.0, end = d; : double m = (start+end)/2.0; : while(abs(d-m*m)>epsilon) { : if(m*m: else end = m; : m = (start+end)/2.0;
|