[英]How does this Haskell function work?
我很难看到这个功能是如何工作的。 对于第n个数,它应该计算前三个元素的总和。
f' :: Integer->Integer
f' = helper 0 0 1
where
helper a b c 0 = a
helper a b c n = helper b c (a+b+c) (n-1)
谢谢你的时间
也许你缺少的那部分是
f' = helper 0 0 1
是一样的
f' x = helper 0 0 1 x
否则,请参阅戴夫的回答。
这是一个相当简单的递归函数。 当用三个元素(我猜测序列的种子)和许多术语调用时,它调用自身,将种子循环一个并添加新术语(a + b + c)。 当“剩余步数”计数器达到0时,边缘情况开始并且仅返回当前序列值。 该值被传递回所有函数调用,给出最终输出。
f'
函数提供了一个围绕helper
函数的简单包装(它完成了我上面描述的工作),提供了一个标准种子并将所请求的术语作为第四个参数传递(MathematicalOrchid很好地解释了这一点)。
用f' 5
说它叫
下面是它将被执行的顺序:
迭代1:助手0 0 1 5
迭代2:辅助0 1(0 + 0 + 1)4
迭代3:帮助器1 1(0 + 1 + 1)3
迭代4:助手1 2(1 + 1 + 2)2
迭代5:辅助2 4(1 + 2 + 4)1
迭代6:辅助器4 7(2 + 4 + 7)0 => 4
它就像斐波那契序列,但对于3个数字,而不是2:
F'_n = F'_{n-1} + F'_{n-2} + F'_{n-3}
Fibonacci序列在哪里
F_n = F_{n-1} + F_{n-2}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.