【发布时间】:2018-02-17 20:29:23
【问题描述】:
考虑下面的代码,它返回一个数字的阶乘:
factorial n = go n 1
where
go n ret | n > 1 = go (n-1) (ret * n)
| otherwise = ret
如何在go n ret 的每个递归调用中打印n?由于n 每次都在递减,我想看看是否可以在每次递减时打印它(如5 4 3 2 1)。
这就是我尝试这样做的方式(这是完全错误的),但我想不出其他方式:
factorial n = go n 1
where
go n ret | n > 1 = go (n-1) (ret * n) print n
| otherwise = ret
【问题讨论】:
-
出于调试目的,您可以使用 Debug.Trace: hackage.haskell.org/package/base-4.10.1.0/docs/Debug-Trace.html