1樓:
計算機求平方根用的是「牛頓逐步逼近法」。基本思想是先對第一次 sqrt() 的結果進行乙個猜測,然後通過計算去得到乙個更好的猜測,逐漸能讓 sqrt() 「逼近」出使用者所期待的精度。假設我們要計算x的平方根,那麼我們先猜乙個y值,然後求出y和x/y的平均值(這樣的結果更加接近實際的平方根),然後不斷經過迭代,能獲得我們最後需要的精度。
關於這個概念比較深入的描述,建議去閱讀一下《Structure and Interpretation of Computer Programs》這本書。
2樓:
defBiSqrt(x
,e)://
Binary
solution
assert
x>=0assert
e>=0low=0
high
=max(1
,x)guess=(
low+
high)/
2.0count
=100
while
abs(
guess**2
-x)>
eand
count
>0:
ifguess**2
low= guess else :high =guess guess=( low+ high)/ 2.0count-=1 return guess defNtSqrt(x ,e):// Newton soultion assert x>=0assert e>=0guess =float(x /2.0 )diff =guess**2 -xcount =100 while abs( diff )>eand count >=0: guess -=diff/( 2.0* guess )diff =guess**2 -xcount-=1 return guess Python寫的。。我覺得原理應該差不多,二分法和牛頓法,e是精度。 C十十20年 新標準不是這樣描述的,參見 C 程式設計精要教程 介紹的2017標準,primer好像是2011標準。其實質含義是,當呼叫該函式用常量作為實參時,編譯程式應盡量根據函式體計算出其返回值,該值若在編譯時能計算出來,它也是乙個作為返回值的常量。因此,這樣的函式和呼叫可被優化掉,而不存在於編... 呂不鬧 如果只是問為什麼,那麼答案應該是 委員會那些老學究不允許太多無關緊要的功能進入標準。可能他們覺得 CPPer 都能自己寫出來吧。 簡易版 include include include include include using namespace std intmain O 1 版 inc... 自己實現可以使用從c那繼承過來的realloc,但是c 的new和allocator體系沒有類似的支援,這就導致了vector在擴容時必須申請一塊新的記憶體並複製,標準也是這樣要求的,就算是標準庫的作者想在底層用realloc去針對可平凡複製構造 析構的型別做這樣的優化也不行。我想c 不提供新的re...C 中的constexpr函式有什麼作用?
為什麼C 中沒有階乘函式?
C 有提供像是 C 中 realloc 這樣的函式的新版本嗎?