對不起不會浮在非常糟糕的冠軍,但我不能想出一個更好的...函數返回功能和F#
我下面的結構和計算機程序的解釋,我試圖做關於尋找平方根的Netwon的連續近似方法的第1.1.7節中的例子。
我嘗試實施它在F#中,我相信我敢接近到那裏,但可能有某種語法問題。
這裏是我的代碼(我用linqpad,因此轉儲()),低於如下問題
let square a = a * a
let average a b = (a + b)/2.0
let a = average 2.0 1.0
a.Dump()
let improve guess x = average guess x
let i = improve 2.0 1.0
i.Dump()
let goodEnough guess x = abs (x - square(guess)) < 0.001
let g = goodEnough 3.0 4.0
g.Dump()
let g2 = goodEnough 2.0 4.0
g2.Dump()
let rec sqrtIterator guess x =
if goodEnough guess x then guess
else sqrtIterator(improve(guess x) x)
let sqrt x = sqrtIterator 1.0 x
我的遞歸調用sqrtIterator得到一個錯誤說: 此表達預計將有類型float
但這裏有類型float -> float
。
所以它似乎我缺少一個參數,使其返回一個函數採取一個參數,但我不明白什麼是錯的?
順便說一句我的提高是錯誤的,這是正確的:讓改善猜測X =平均猜想(X /猜測) – khebbie 2012-02-26 17:07:43