12

可能重复:
[F#] 如何让两个方法互相调用?

大家好,

我有一个场景,我有两个函数可以从相互递归中受益,但我不确定如何在 F# 中执行此操作

我的场景并不像下面的代码那么简单,但我想得到类似编译的东西:

let rec f x =
  if x>0 then
    g (x-1)
  else
    x

let rec g x =
  if x>0 then
    f (x-1)
  else
    x
4

3 回答 3

27

您也可以使用let rec...and形式:

let rec f x =
  if x>0 then
    g (x-1)
  else
    x

and g x =
  if x>0 then
    f (x-1)
  else
    x
于 2010-09-01T18:53:33.160 回答
2

要获得相互递归的函数,只需将一个作为参数传递给另一个

let rec f g x =
  if x>0 then
    g (x-1)
  else
    x

let rec g x =
  if x>0 then
    f g (x-1)
  else
    x
于 2010-09-01T18:44:25.880 回答
2

使用let rec ... and ...构造:

let rec f x =
  if x>0 then
    g (x-1)
  else
    x

and g x =
  if x>0 then
    f (x-1)
  else
    x
于 2010-09-01T18:54:51.897 回答