我需要从String
输入中找到所有偶数。
我设法将所有偶数列出来,但我不明白,我怎么能在之后得到那些偶数的总和。
numbers :: String -> [Int]
numbers [] = []
numbers (l:ls) = if ord l == 48 || ord l == 50 || ord l == 52 || ord l == 54 || ord l == 56
then (ord l - 48): (numbers ls)
else (numbers ls)
所以结果将是:" abc1234" => 6
答案 0 :(得分:2)
你已经很漂亮了。 (ord l - 48)
从字符串中提取整数值,因此您必须累积此值。或者总结得到的结果(基本上是一个函数)
基本的递归循环是:
numbers :: String -> Int -> Int
Given an empty string and accumulated value -> return accumulated value
Given string (l:ls) not empty and accumulated value ->
if l matches your criteria
numbers ls (accumulated value + (ord l - 48))
else
numbers ls (solely the accumulated value, as `l` doesn't match criteria)
答案 1 :(得分:2)
另一种写同样的方法
import Data.Char(digitToInt)
sumEvens = sum . map digitToInt . filter (`elem` "2468")