我正在尝试使用Haskell解决以下问题:
问题
定义函数sumToLists :: Int -> [[Int]]
,给定自然数n
,该函数将返回所有正数列表,以使它们的总和为n
。
我对这个问题很困惑,也许使用递归可以得出解决方案,但是我不知道如何解决这个问题。任何建议将不胜感激
答案 0 :(得分:2)
sumToLists 0 = [[]]
sumToLists n = [ i: xs | i <- [1..n], xs <- sumToLists (n - i) ]
0
需要特殊情况,因为默认情况下将返回[]
而不是[[]]
。