晓夏

袁维娅

又一个WordPress站点

诺贝尔经济学奖爱奇艺面试题解析:如何求根号2-算法爱好者

浏览量:92

爱奇艺面试题解析:如何求根号2-算法爱好者诺贝尔经济学奖唐韵山庄
(给算法爱好者加星标,修炼编程内功)
作者:Great Eagle(本文来自作者的投稿)
问题
小E最近找实习的时候,被面试官问了这样一道题:如何求根号2的值?
小E没能答上来天津脸,回来后向老师请教韩世荣 。
思路

















点评:以上介绍了二分法和牛顿迭代法来求解根号2股道家园,张威凯另外我们还可以通过泰勒公式法来求解。很多朋友可能会问泡妞作弊器 ,我们经常调用的Math库中sqrt(x)函数的实现用的是哪种方法呢修仙技能树 ?为了效率,sqrt(x)函数在底层是用C语言来实现的喋血长平,实现过程非常巧妙,效率极高张芳奕 ,用到了牛顿迭代法的思想,但又不完全是牛顿迭代法陆大姬 ,我会将sqrt(x)库函数的代码放于文后特战神医 ,有兴趣可以研究。
代码实现
牛顿迭代法(JavaScript)
//求n的算术平方根叶诚万 ,参数n不能为负数functionsqrt(n){//当n>=1时,从n开始迭代;//当n<1时纪敏尚,从1开始迭代letres=n>=1?n:1;while(res*res-n>1e-8)res=0.5*(res+n/res);returnres;}
附:
C语言实现的库函数(源码)
//源码中求的是根号x的倒数幻之国度,参数x必须大于0floatinvSqrt(floatx){floatxhalf=0.5f*x;inti=*(int*)&x;//下面这句是核心,有兴趣可阅读相关论文i=0x5f375a86-(i>>1);x=*(float*)&i;//下面使用了三次牛顿迭代x=x*(1.5f-xhalf*x*x);x=x*(1.5f-xhalf*x*x);x=x*(1.5f-xhalf*x*x);//注:此函数返回的是根号x的倒数returnx;}
推荐阅读
(点击标题可跳转阅读)
面试还在被红-黑树虐张仪天?看完这篇轻松搞定面试官
面试精梁永斌微博选:链表问题集锦
2016 腾讯软件开发面试题(部分)
觉得本文有帮助?请分享给更多人
关注「算法爱好者」加星标,修炼编程内功