【问题标题】:Returning a recursive function in ML在 ML 中返回递归函数
【发布时间】:2012-11-21 21:54:53
【问题描述】:

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

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

【问题讨论】:

  • 你能改写问题或举个例子吗?为什么你认为你不能返回一个递归函数?

标签: recursion sml ml


【解决方案1】:

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

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

【讨论】:

  • 我想实现一个函数 f: (int->int) -> (int->int) 接收函数 g 作为参数并返回 h,其中:h= $sum_{i =0}^{i}g(i)$ 我尝试使用“let”,但经过大量尝试仍然无法正常工作。
猜你喜欢
  • 2017-10-29
  • 2012-09-19
  • 1970-01-01
  • 2018-11-13
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多