【发布时间】:2021-12-07 05:42:24
【问题描述】:
我正在尝试使用递归 eval :: Int -> Bool 编写一个函数,如果给定一个每个奇数都大于 10 的列表,则该函数返回 true。例如:
eval [] == True
eval [1] == False
eval [2] == True
eval [1, 11, 21] == False
eval [2, 12, 22] == True
eval [21, 11] == True
我必须使用递归来做到这一点,并且我有一个基本代码:
eval :: [Int] -> Bool
eval [] = True
eval (x:xs) | mod x 2/= 0 && x > 10 = True
| otherwise = eval xs
代码运行,但它不适用于将大于 10 的奇数作为第一个输入的列表,因为它将列表的第一个值作为标准。我认为首先按升序对列表进行排序,然后执行递归是可行的,这是正确的,如果是,我该如何实现它?
【问题讨论】: