虽然要求实现卡方函数,但面试中出现这个问题的次数很多。 (二分搜索法对于给定的非负数a,平方根不会大于[A/2 1],因此在[0,A/2 1]的范围内进行二分搜索
defsqrt(target ) : low=0high=target//21 while low=high : mid=) lowhigh )//2sq=mid * midiftarget==sq 3: 面试官想要的是牛顿迭代法的解答。
参照百度百科,此时,求解方程式f(x )=x2a )=x )2-af ) x )=x2a,开方求出f(x )=0f(x )=0、一次lldwg展开.
f(x )=f ) x0 ) f () x0 ) ) f )=f ) x_0) f^{#x27; ((x_0) (x-x_0) f )=f ) x0 ) f ' (x0 ) xx0 ) ) ) ) ) ) ) )
如果设为0,则可以更新表达式。
x=12(x0ax0) x=(FRAC{1}{2} ) x _0(frac { a } { x _0} ) x=21 (x0x0a ) ) ) ) ) ) x0x0a ) ) )
defsqrt(target ) : if target==0: return0last=0RES=1while (ABS (last-RES )=0.0000001 ) 3360 last=RES=)