我很难弄清楚这个功能是如何工作的,我需要专家的解释。感谢任何帮助!
puzzle n x = scanr (\y acc -> (acc + y/acc)/2) 1 (replicate n x)
我尝试过运行这些:
--puzzle 10 2
--puzzle 10 5
--puzzle 10 36
它分别给出了这个输出:
[1.414213562373095,1.414213562373095,1.414213562373095,1.414213562373095,1.414213562373095,1.414213562373095,1.4142135623746899,1.4142156862745097,1.4166666666666665,1.5,1.0]
[2.23606797749979,2.23606797749979,2.23606797749979,2.23606797749979,2.23606797749979,2.236067977499978,2.2360688956433634,2.238095238095238,2.3333333333333335,3.0,1.0]
[6.0,6.0,6.0,6.0,6.000000005333189,6.0002529841194185,6.055351744849479,6.872226737643129,10.222972972972974,18.5,1.0]