recursion - Clojure 中的非尾递归匿名函数

标签 recursion lambda clojure

如何在 Clojure 中创建一个不是尾递归的递归匿名函数?

以下显然不起作用,如 recur仅用于尾递归函数。我也不愿意拖入 y 组合器..

((fn [n] (if (= 1 n) 1 (* n (recur (dec n))))) 5)

最佳答案

通过在 fn 之间指定函数,可以给函数一个名称来引用它们自身。和 arglist:

user> ((fn ! [n] (if (= 1 n) 1 (* n (! (dec n))))) 5)
120

关于recursion - Clojure 中的非尾递归匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5626641/

相关文章:

c# - 里面的lambda表达式?? (如果是快捷方式)运算符

google-app-engine - 项目适合 Google App Engine?

计算C中的嵌套根

java - 如何对自身进行递归回溯?

Java:递归方法接受整数 'n'并打印 'n'个字符

c - "Program received signal SIGSEGV , Segmentation fault” 尝试使用递归获取所有3字符组合的关键字时

java - 使用接口(interface) java 8 处理 Lambda 表达式

c++ - 将重载的 CRTP 类成员方法传递给 lambda

clojure - 在一个或多个嵌套循环内从函数返回?

Clojure:需要架构建议