說的沒錯 那你知道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
: 為什麼? 不是不會 是沒想到
: 資訊科技的中心思想,也就是解決問題的方法
: 如何更快,更有效率的解決一個問題,就是科技
: 而怎樣才是一個優秀的工程師,就是在於是否具備這樣的能力
: 而這種事可能不是爆了多久的肝,或是寫了多少程式就能擁有的
: 所以為什麼有比爾蓋茲寫程式寫到變首富,卻也有人整天寫程式,但寫不出個東西
: 主要就是看個人是否具備靈活,創新的思維,當然不只這些
: 還有太多太多需要學習的
: 所以門檻高不高?
: 端看你想要到多高