0

这只是一个例子。这两个功能是相连的。你真的想调用最低的那个。然后它应该返回两者中最小的数字。这当然行不通,因为您在编译 reducemax 函数时调用了一个未定义的函数,当时称为最低。

fun reducemax (i:int * int):int =
    if (#1 i) > (#2 i)
    then lowest(((#1 i)-1), (#2 i))
    else lowest((#1 i), ((#2 i)-1));

fun lowest (i:int * int):int =
    if (#1 i) = (#2 i)
    then (#1 i)
    else reducemax((#1 i), (#2 i));

我知道我可以使用 let 来在最低的内部声明 reducemax 函数,但是有什么办法解决这个问题吗?例如在 C 中,声明函数而不定义它。我确实理解 reducemax 函数需要知道最低将返回一个 int 并采用一个 int * int 参数。

4

1 回答 1

2

只需将第二个替换为funand删除分号即可。这定义了相互递归的函数。

于 2013-11-07T14:30:45.370 回答