Не исчерпывающая рекурсия на Haskell
sumAllDigits :: [ Int ] -> Int
sumAllDigits (x:xs)
|(x:xs) == [] = 0
|x >= 10 = sumDigits x + sumAllDigits xs
|x< 10 = x + sumAllDigits xs
ОТЧЕТ:
* Recursion> sumAllDigits [22,33] *** Исключение: Recursion.hs:(76,1)-(79,34): неисчерпывающие шаблоны в функции sumAllDigits
1 ответ
Я полагаю, что следующие изменения исправят это для вас. Я предпочитаю делать пустой список так, чтобы его собственная реализация соответствовала. Просто чувствует себя более явным для меня. А потом, так как x
будет падать через >=
если оно меньше, иначе будет охватывать эти случаи.
sumAllDigits :: [ Int ] -> Int
sumAllDigits [] = 0
sumAllDigits (x:xs)
| x >= 10 = sumDigits x + sumAllDigits xs
| otherwise= x + sumAllDigits xs