繁体   English   中英

这个Haskell函数如何工作?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM