我刚开始使用Haskell而且我正在努力!!!
所以我需要创建一个具有公式
的Haskell列表
F(n)=(F(n-1)+ F(n-2))* F(n-3)/ F(n-4)
我有F(0)= 1,F(1)= 1,F(2)= 1,F(3)= 1
所以我想初始化列表的前4个元素,然后创建一个运行n> 4的递归函数,并将值附加到列表中。
我的代码看起来像这样
let F=[1,1,1,1]
fib' n F
| n<4="less than 4"
|otherwise = (F(n-1)+F(n-2))*F(n-3)/F(n-4) : fib (n-1) F
我的代码在概念上看起来对我来说(虽然不确定)但是在编译时我得到了一个不正确的缩进错误。我是否可以按照我的方式初始化列表中的元素?
答案 0 :(得分:3)
首先,Haskell中的变量必须是小写的。其次,Haskell并不能让你自由地混合整数和分数,就像你习惯于使用无类型或几乎没有类型的语言一样。如果您想要从Int
或Integer
转换为Double
,则需要使用fromIntegral
。第三,你不能在需要数字的环境中粘贴一个字符串。第四,您可能有也可能没有缩进问题 - 请确保不要在Haskell文件中使用制表符,并使用GHC选项-fwarn-tabs
来确定。
现在我们了解问题的核心:你这一切都有些错误。我会给你一个提示,而不是一个完整的答案:
thesequence = 1 : 1 : 1 : 1 : -- Something goes here that *uses* thesequence