这只是一个例子。这两个功能是相连的。你真的想叫一个叫做最低的那个。然后它应该返回两者中的最小数字。这当然不会起作用,因为在编译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参数。
答案 0 :(得分:2)
只需将第二个fun
替换为and
,然后删除分号即可。这定义了相互递归的函数。