一个非常重要同时也非常复杂的运算,在计算机中实现这种函数通常比较困难,所以编程语言一般都会对这些函数进行封装,程序员在编程的时候,如果涉及到平方根运算,直接调用函数库中的函数就行了很少有人会懂得底层到底是如何实现的。
而且,能够实现是一方面,能不能做到运算效率高效又是另外一方面。
程序的运行效率,往往就是高手和菜鸟之间的重要区别,真正的黑客,编程的时候,不仅仅只是将功能实现,还会追求最高效率有时候可能只是一个符号的变化,其执行效率便天差地别。
执行一次的区别可能看不出来,可是如果循环一千次,一万次呢?
高手和菜鸟编写的程序,在效率上往往有着很多倍的差距,要想编写出高效优雅的程序必须有着对编程语言和计算机底层的本质理解,同时还得拥有丰富的编程经验,在这方面可做不得假实践是唯一提高自身实力的方式。,
林鸿知道,求平方根的运算,有一个算法叫做牛顿迭代法,其原理为:
如果一个数为x,假设它的平方根为y如果y的平方和x相差大于某个给定的误差′就继续假设下一个值,如此持续下去直到最终得到在允许误差内的值。
至于如何假设这个值,使用的方式便是取平均值其中必须多次用到除法和乘法。
在计算机中,其本质其实就是加法,整个cpu的运算其实就是一个加法器,当初林鸿实现超脑cpu结构的时候,就是基于一个加法器结构,至于后面的减法、乘法以及除法等运算,都是对在这个加法器的基础上衍伸而来。
直接使用牛顿迭代法来求平方根,这是普通人的做法,林鸿不用想都知道,如果真的按照这种方式来实现,显然不能过关。
林鸿略微一思索便有了头绪,他查看了一下电脑中的编译器,发现这台电脑里面准备得非常充分,不但有市面上常见的一些编程语言编译器,如c、baisc、java、c++等语言,甚至还有一些非常小众的编程语言,如ada、blue、isp等等。
最终,林鸿还是调出了电脑中的c语言编译器,直接敲起代码来。
霹雳啪啦,仅仅过了二十来秒之后,林鸿便完成了函数的编写。
他调用用函数执行了一下,程序成功运行,没有任何地错误,一次通过。
想了想,他再次删掉了两行,将两个步骤合并成了一个,最终的函数代码总数正好为十行。
“