求平方根函式

2021-05-04 14:43:19 字數 466 閱讀 1637

加一點注釋:

unsigned short work( unsigned int n/*要進行開平方運算的物件*/ )

{unsigned int ans = 0;/*開平方運算的結果*/

unsigned int square = 0;/*記錄中間產生的平方值*/

unsigned short r = 0;/*程式最終的返回結果*/

for ( int i = 15; i >= 0; --i )/*整形的長度為4個位元組,即32位,這裡取15為30的一半,夠用了*/

{unsigned int tmp = square;/*上次運算的平方值*/

tmp += (ans<<(i+1))+(1<<(i<<1));

/*tmp-ans的平方,(ans<<(i+1))-即2*(ans《即整個式子含義是(ans+(1 《這樣寫的演算法核心思想是做二進位制的處理,即選擇每一位上是1還是0,實際上是一種搜尋演算法。

4 求平方根

問題描述 實現int sqrt int n 函式,計算返回n的平方根。問題示例 sqrt 3 1,sqrt 10 3,sqrt 4 2,sqrt 5 2。問題分析 一般遇到解方程的題目,最常用的就是二分法。實現 class solution def my sqrt self,n 利用二分法實現平方根...

《雷神之鎚III》裡求平方根的函式

更新 有人問這個演算法的原理。其實原理很簡單。就是牛頓迭代求根。卡馬克演算法牛x的地方就是他選了乙個常數作為起始值。而這個起始值讓他只用一次迭代就夠了。從這裡看來的。quakeiii自然就是 傳奇高手卡馬克的傑作之一了。在有的cpu上,這個函式比普通的 float 1.0 sqrt x 快4倍!快的...

《雷神之鎚III》裡求平方根的函式

更新 有人問這個演算法的原理。其實原理很簡單。就是牛頓迭代求根。卡馬克演算法牛x的地方就是他選了乙個常數作為起始值。而這個起始值讓他只用一次迭代就夠了。從 這裡看來的。quakeiii自然就是 傳奇高手卡馬克的傑作之一了。在有的cpu上,這個函式比普通的 float 1.0 sqrt x 快4倍!快...