看到了一种来自古希腊或古巴比伦的求平方根的方法。
求 x 的平方根。
假设 a 是 x 的平方根的近似值,那么 a 和 x / a
的平均数就比 a 更接近 x 的平方根。让 a1 = (a + x / a) / 2
,即 a1 是比 a 更精确的对 x 的平方根的估值。以此类推,可以不断求得更加精确的平方根。
例如,求 2 的平方根,我们先猜测其为 1.2 (任意一个大于1,小于2的数),然后继续逼近
1.2
(1.2 + 2/1.2)/2 = 1.43
(1.43 + 2/1.43)/2 = 1.414
代码
defmodule M do
def sqrt(x, iter \\ 10)
def sqrt(x, i) do
a = (1+x)/2
do_sqrt(x, a, i)
end
defp do_sqrt(_, a, 0), do: a
defp do_sqrt(x, a, i) do
a = (a + x/a)/2
do_sqrt(x, a, i-1)
end
end
测试一下
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。