【发布时间】:2020-08-11 05:15:49
【问题描述】:
我正在 Haskell 中实现 Pascal Triangle,但代码运行不正确。该代码又给出了 1 行。我也尝试像树一样打印结果,但这对我来说既困难又困惑,所以我没有添加打印代码。
这些是我得到的结果:
*Main> pascal 1
[[1],[1,1]]
*Main> pascal 2
[[1],[1,1],[1,2,1]]
预期输出:
*Main> pascal 2
[[1],[1,1]]
理想输出:
*Main> pascal 3
1
1 1
1 2 1
这是代码:
choose n 0 = 1
choose 0 k = 0
choose n k = choose (n-1) (k-1)* n `div` k
pascal :: Integer -> [[Integer]]
pascal 0 = [[1]]
pascal m = pascal (m - 1) ++ [[choose m k | k <- [0,1..m]]]
【问题讨论】:
-
那么...您对
pascal 1的预期输出是[[1]]吗?如果是这样,这不只是有错误的基本情况吗? -
@Carl 测试简单地修复基本情况是否会产生与给定预期输出相匹配的函数是一件容易的事情。你试过那个测试吗?
-
我问了一个关于在haskell中记忆pascals triangle的问题,也许会给一些启发stackoverflow.com/questions/11473130/…
-
编辑不得使现有答案无效。我将它回滚到第一个版本,对标题进行了小幅编辑。
-
我猜,帖子就这样了。我向question on Meta 询问了关于编辑大战的问题,受此启发。如果 OP 想要,我将删除此 SO 帖子的链接。
标签: haskell recursion pascals-triangle