对不起不会浮在非常糟糕的冠军,但我不能想出一个更好的...函数返回功能和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