我无法理解这个函数是如何工作的。对于第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)
感谢您的时间。
我无法理解这个函数是如何工作的。对于第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
假设它被称为f' 5
下面是它执行的顺序:
迭代1:helper 0 0 1 5
迭代2:helper 0 1 (0+0+1) 4
迭代3:helper 1 1 (0+1+1) 3
迭代4:helper 1 2 (1+1+2) 2
迭代5:helper 2 4 (1+2+4) 1
迭代6:helper 4 7 (2+4+7) 0 => 4
这就像斐波那契数列,但是针对的是三个数字而不是两个:
F'_n = F'_{n-1} + F'_{n-2} + F'_{n-3}
斐波那契数列是什么
F_n = F_{n-1} + F_{n-2}
helper
的定义并使用:t helper
获取其类型,这将给你一个提示。 - Alexandre C.