如何在 ML 中返回递归函数?
据我所知,递归匿名函数不能返回,只能返回匿名函数 可以用作返回值(如果返回值是函数...)。
最佳答案
这是您想知道的示例吗?
fun f n =
let
fun g k =
if k = n then [] else k :: g (k-1)
in
g
end
您只能通过命名来进行递归定义,但这不是问题,因为您可以在任何地方编写 let
表达式。
更新以更具体地回答评论:
fun f g =
let
fun h 0 = g 0
| h i = h (i-1) + g i
in
h
end
(更有效的实现将使 h
尾递归。)
关于recursion - 返回 ML 中的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13462234/