haskell中带折叠的益智函数?
我很难弄清楚这个函数是如何工作的,我需要专家的解释。谢谢你的帮助haskell中带折叠的益智函数?,haskell,Haskell,我很难弄清楚这个函数是如何工作的,我需要专家的解释。谢谢你的帮助 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.414213
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]
它生成一个n个x-e的列表,如[x,x,x,x,…](n次) 然后它所做的是:
x1 = ( 1 + x/1)/2
x2 = (x1 + x/x1)/2
x3 = (x2 + x/x2)/2
x4 = (x3 + x/x3)/2
结果是,
[xn,x(n-1),…,x2,x1]
它生成一个类似[x,x,x,x,…]的nx-e列表(n次)
然后它所做的是:
x1 = ( 1 + x/1)/2
x2 = (x1 + x/x1)/2
x3 = (x2 + x/x2)/2
x4 = (x3 + x/x3)/2
结果是,
[xn,x(n-1),…,x2,x1]
它生成一个类似[x,x,x,x,…]的nx-e列表(n次)
然后它所做的是:
x1 = ( 1 + x/1)/2
x2 = (x1 + x/x1)/2
x3 = (x2 + x/x2)/2
x4 = (x3 + x/x3)/2
结果是,
[xn,x(n-1),…,x2,x1]
它生成一个类似[x,x,x,x,…]的nx-e列表(n次)
然后它所做的是:
x1 = ( 1 + x/1)/2
x2 = (x1 + x/x1)/2
x3 = (x2 + x/x2)/2
x4 = (x3 + x/x3)/2
结果是,
[xn,x(n-1),…,x2,x1]
此函数使用牛顿公式计算平方根,并将所有迭代结果存储在列表中
是维基上的牛顿方法
存储过程基于功能的定义:
scanr与foldr类似,但返回一个列表
从右侧开始的连续减少值的
此函数使用牛顿公式计算平方根,并将所有迭代结果存储在列表中 是维基上的牛顿方法 存储过程基于功能的定义: scanr与foldr类似,但返回一个列表 从右侧开始的连续减少值的
此函数使用牛顿公式计算平方根,并将所有迭代结果存储在列表中 是维基上的牛顿方法 存储过程基于功能的定义: scanr与foldr类似,但返回一个列表 从右侧开始的连续减少值的
此函数使用牛顿公式计算平方根,并将所有迭代结果存储在列表中 是维基上的牛顿方法 存储过程基于功能的定义: scanr与foldr类似,但返回一个列表 从右侧开始的连续减少值的
或者更确切地说,结果是
[x1,x2,…]
,因为所使用的函数实际上是scanr
,而不是像OP所说的foldr
。感谢大家提供的信息性评论和帖子!或者更确切地说,结果是[x1,x2,…]
,因为所使用的函数实际上是scanr
,而不是像OP所说的foldr
。感谢大家提供的信息性评论和帖子!或者更确切地说,结果是[x1,x2,…]
,因为所使用的函数实际上是scanr
,而不是像OP所说的foldr
。感谢大家提供的信息性评论和帖子!或者更确切地说,结果是[x1,x2,…]
,因为所使用的函数实际上是scanr
,而不是像OP所说的foldr
。感谢大家提供的信息性评论和帖子!感谢您的帮助和解释扫描与折叠功能!感谢您的帮助和解释扫描与折叠功能!感谢您的帮助和解释扫描与折叠功能!感谢您的帮助和解释扫描与折叠功能!