求平方根的面試題

2021-07-25 17:41:17 字數 662 閱讀 3364

前幾天在網上看到有人曬一道面試題,寫乙個函式求平方根,該函式帶2個引數,第乙個引數是目標數字,第二個引數是精度。即:

double sqrt(const double target, const double g);

a = sqrt(t, g);

// 要求 |a - t^0.5| < g

原文看到題目,就沒有接著往下看,想了一會兒,就有思路了,覺得拿來做面試題不錯。可是沒想到面了好幾個人,都沒有人能給出稍微好看點的**。難道大家工作久了之後,寫**反而生疏了嗎?一直手癢,今晚就花了幾分鐘實現了一下,感覺還是比較簡單的。實現完成之後,感覺不錯,給出的答案都滿足要求了,程式應該是對了。但是後來仔細一思考,又打了些程式處理過程的trace出來,發現不對了,有bug. 什麼bug呢?收斂比較慢,和原來二分查詢的設想不一樣。雖然也能給出結果,但是收斂慢了,程式的實現和自己的思路不一致。想了一會兒,給出了正確的**。該sqrt函式實現大約24行左右,如下:

#include using namespace std;

double sqrt(const double x, const double g)

else

}else

else }}

}int main()

求平方根函式

加一點注釋 unsigned short work unsigned int n 要進行開平方運算的物件 unsigned int ans 0 開平方運算的結果 unsigned int square 0 記錄中間產生的平方值 unsigned short r 0 程式最終的返回結果 for int...

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 利用二分法實現平方根...

迭代法求平方根

迭代法也稱輾轉法,是一種不斷用變數的舊值遞推新值的過程,跟迭代法相對應的是直接法,即一次性解決問題。迭代法又分為精確迭代和近似迭代,二分法 和 牛頓迭代法 屬於近似迭代法。迭代演算法是用計算機解決問題的一種基本方法。它利用計算機運算速度快 適合做重複性操作的特點,讓計算機對一組指令 或一定步驟 進行...