0
(filter even? (numb-2tx 100000))

;Aborting!: maximum recursion depth exceeded
;;numb-2tx generates a list from 2 to x, even for very large values of x (tested with 2000000)

当我尝试将过滤器功能应用于非常长的列表(> 40,000 左右)时,我遇到了最大递归深度错误。

是否有类似的内置程序不会遇到这个问题,还是我必须自己想出一个尾递归等价物?

4

1 回答 1

1

--stack使用该选项启动 MIT 计划。像这样:

$ mit-scheme --stack 10000

这是我使用开箱即用堆栈和 1000 堆栈的结果:

> (length (filter even? (iota 1000000)))

;Aborting!: maximum recursion depth exceeded

然后,使用后--stack 10000

> (length (filter even? (iota 1000000)))

;Value: 500000

知道filter有这种明显的非尾递归行为有点令人不安。

于 2013-05-04T02:04:25.973 回答