第五百四十八章 技术宅(2 / 4)
距,要想编写出高效优雅的程序,必须有着对编程语言和计算机底层的本质理解,同时还得拥有丰富的编程经验,在这方面可做不得假,实践是唯一提高自身实力的方式。 林鸿知道,求平方根的运算,有一个算法叫做牛顿迭代法,其原理为: 如果一个数为x,假设它的平方根为y,如果y的平方和x相差大于某个给定的误差,就继续假设下一个值,如此持续下去,直到最终得到在允许误差内的值。 至于如何假设这个值,使用的方式便是取平均值,其中必须多次用到除法和乘法。 在计算机中,其本质其实就是加法,整个cpu的运算其实就是一个加法器,当初林鸿实现超脑cpu结构的时候,就是基于一个加法器结构,至于后面的减法、乘法以及除法等运算,都是对在这个加法器的基础上衍伸而来。 直接使用牛顿迭代法来求平方根,这是普通人的做法,林鸿不用想都知道,如果真的按照这种方式来实现,显然不能过关。 林鸿略微一思索便有了头绪,他查看了一下电脑中的编译器,发现这台电脑里面准备得非常充分,不但有市面上常见的一些编程语言编译器,如c、baisc、java、c++等语言,甚至还有一些非常小众的编程语言,如ada、blue、lisp等等。 最终,林鸿还是调出了电脑中的c语言编译器,直接敲起代码来。 霹雳啪啦,仅仅过了二十来秒之后,林鸿便完成了函数的编写。 他调用用函数执行了一下,程序成功运行,没有任何地错误,一次通过。 想了想,他再次删掉了两行,将两个步骤合并成了一个,最终的函数代码总数正好为十行。 “好了。”林鸿道。 站在他身后的广永元此刻还在皱着眉头看着他的程序。 他想不通,林鸿为什么这么编写。 “这么快就好了?”染发青年有些诧异。 刚刚他让出座位的时候,便从一个角落拿出了一个掌上游戏机玩了起来,可是刚刚才开始玩,便听到林鸿说已经ok。 这在众多挑战者当中,还是头一回。 染发青年俯身过去看了一眼,脸上微微一愣,林鸿写的这十行代码,虽然他能看懂大部分,但是还有几个细节他一时之间也没弄懂。 他顺手将林鸿的这个函数加入时间统计宏,执行一万次之后,最终显示出了时间,965毫秒,也就是说,不到一秒钟。 他用敬服的眼神看着林鸿,说道:“你过关了。我在这里呆了两年了,两年来,从这里走过的人不下五十人,可是从来没有一个人做到你这一步,不但结果保证精度,并且执行一万次的时间不超过一秒。” 林鸿笑笑,对于他的夸赞并没有什