alt*_*alt 1 tail-recursion clojure
Clojure说我无法recur从非尾部位置打电话.
这不是尾巴的位置吗?
那么我的循环中的尾部位置是什么?
(loop [i 20]
(for [x (range 1 21)]
(if (zero? (rem i x))
i
(recur (+ i 1)))))
Run Code Online (Sandbox Code Playgroud)
for不做你认为它做的事情; 它不是一个必要的循环.它是列表推导或序列生成器.因此,最后没有返回或迭代调用,所以你不能放在recur那里.
看起来你可能根本不需要loop或recur在这个表达式中; 这for就是构建序列所需要的一切,但我不清楚你想要构建什么序列.
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |