关于Haskell递归的非详尽无遗


sumAllDigits :: [ Int ] -> Int  
sumAllDigits (x:xs)  
   |(x:xs) == []  = 0  
   |x >= 10  = sumDigits x + sumAllDigits xs  
   |x< 10    = x + sumAllDigits xs  

报告:
*递归>总和所有数字 [22,33] 异常:递归.hs:(76,1)-(79,34):函数 sumAllDigits 中的非穷举模式

我相信

以下更改将为您纠正此问题。我更喜欢将空列表情况作为自己的实现来匹配。只是感觉更明确。然后,由于如果小于x,它将通过>=下降,否则将涵盖这些情况。

sumAllDigits :: [ Int ] -> Int  
sumAllDigits [] = 0
sumAllDigits (x:xs)  
   | x >= 10  = sumDigits x + sumAllDigits xs  
   | otherwise= x + sumAllDigits xs  

相关内容

  • 没有找到相关文章

最新更新