在ML中返回递归函数

时间:2012-11-19 21:06:26

标签: recursion sml ml

如何在ML中返回递归函数?

据我所知,递归匿名函数不能返回,只能匿名函数 可以用作返回值(如果返回值是函数...)。

1 个答案:

答案 0 :(得分:3)

这会是你想知道的那种例子吗?

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尾递归。)