我正在玩弄这种语言来开始学习,我对递归定义的工作原理感到困惑。
例如,让我们取三角数的序列 ( TN n = sum [1..n]
)
提供的解决方案是:
triangularNumbers = scanl1 (+) [1..]
到目前为止,一切都很好。
但我确实想出的解决方案是:
triangularNumbers = zipWith (+) [1..] $ 0 : triangularNumbers
这也是正确的。
现在我的问题是:这如何转化为较低级别的实现?当满足这样的递归定义时,幕后究竟会发生什么?