定义整数列表的函数,使它们的和为n

时间:2019-01-30 02:26:13

标签: haskell recursion combinatorics

我正在尝试使用Haskell解决以下问题:

问题

定义函数sumToLists :: Int -> [[Int]],给定自然数n,该函数将返回所有正数列表,以使它们的总和为n

我对这个问题很困惑,也许使用递归可以得出解决方案,但是我不知道如何解决这个问题。任何建议将不胜感激

1 个答案:

答案 0 :(得分:2)

sumToLists 0 = [[]]
sumToLists n = [ i: xs | i <- [1..n], xs <- sumToLists (n - i) ] 

0需要特殊情况,因为默认情况下将返回[]而不是[[]]