【发布时间】:2021-07-18 11:54:47
【问题描述】:
我一直在处理一项任务,但我无法完成它。
我应该编写一个函数,它接受一个数字列表并返回一个显示偶数但将所有奇数加倍的列表。 (基本上相同的列表,但赔率翻倍)。
doubleOdd :: [Integer] -> [Integer]
doubleOdd [] = []
doubleOdd a = [x*2 | x <- a, odd x]
我的问题是:
- 我只能使用 +、-、*、/、==、/=、sum、mod、elem、maximum、odd、even
- 我不知道如何获得不同的条件以使相同的值起作用(例如,如果 x 是偶数 = x 并且在同一个列表理解中有:如果 x 是奇数 = x*2)
到目前为止,我只需要打印偶数或奇数,但永远不会同时打印.....
我希望有人可以帮助我。
【问题讨论】:
-
您根本不必过滤 (
,odd x)(如果我的问题正确),而是考虑如何更改映射部分 (x*2) 来做您想做的事想要(提示:if ... then ... else ...是您可以在那里使用的表达式) -
附加提示:
odd x == not (even x)适用于所有数字 - 在else部分,您会看到如果您的if的条件是not true会发生什么...
标签: list haskell conditional-statements list-comprehension