说的没错 那你知道sqrt函数 用牛顿法求解 传说中有一个神一般的初始值吗
0x5f3759df 这是雷神之锤3 John Carmack在90年代CPU很弱时候 在3D图形里面
在做开平方运算时候 所猜测的神解答 让那个时代程式可以跑3D运算
现在的Open CV函数库也有调用这初始值
当年的程式码 后人注解就是WTF?
i = 0x5f3759df - ( i >> 1 ); // what the fuck?
详细故事请参阅
http://www.cnblogs.com/pkuoliver/archive/2010/10/06/sotry-about-sqrt.html
写程式和写的神 是两种不同事情啊
※ 引述《hihijames (123)》之铭言:
: 单就你那个问题
: "既然功能都一样 怎么比较哪个比较好?"
: 本科的当然都知道用时间、空间复杂度比较
: 用简单一点的说法
: 例如,一样是从1加到n的程式
: 你可以用for(i=o;i<=n;i++)
: sum=sum+i
: 也可以用sum=n*(n+1)/2
: 前者要重复执行该程式n次才能求出总和
: 后者只要执行一次就可以了
: 这样一个简单的程式,写法不同,速度就会有很大的差别
: 更不用说是复杂庞大的程式了,速度可能会从几秒钟差到几分钟以上
: 后者不过是个简单的梯形公式,国小就教过了
: 但你信不信很多人还是用前者那样的写法在写1加到n
: 为什么? 不是不会 是没想到
: 资讯科技的中心思想,也就是解决问题的方法
: 如何更快,更有效率的解决一个问题,就是科技
: 而怎样才是一个优秀的工程师,就是在于是否具备这样的能力
: 而这种事可能不是爆了多久的肝,或是写了多少程式就能拥有的
: 所以为什么有比尔盖兹写程式写到变首富,却也有人整天写程式,但写不出个东西
: 主要就是看个人是否具备灵活,创新的思维,当然不只这些
: 还有太多太多需要学习的
: 所以门槛高不高?
: 端看你想要到多高