【发布时间】:2017-06-12 14:54:45
【问题描述】:
我似乎被困在一个问题上,不知道如何解决它,也不知道我当前的代码做错了什么。
我必须编写一个名为oddDigits 的函数,它接受一个整数参数并返回一个布尔结果。当且仅当参数是奇数位数的正整数时,它才应该返回 True。如果参数为零或负数,函数应停止并显示错误消息。
另外,不能将参数转换为字符串。必须使用递归。 我有一种感觉,每个数字都可以递归地存储在一个列表中,然后列表的长度可以确定答案。
到目前为止,我有这个:
oddDigits :: Integer -> Bool
lst = []
oddDigits x
| (x < 0) || (x == 0) = error
| x `mod` 10 ++ lst ++ oddDigits(x `div` 10)
| length(lst) `mod` 2 /= 0 = True
| otherwise = False
抱歉,如果代码看起来很糟糕。我是 Haskell 的新手,仍在学习。我到底做错了什么,我该如何纠正?
【问题讨论】:
标签: function haskell recursion