【发布时间】:2015-08-16 03:56:20
【问题描述】:
我确信有一种方法可以在 SML 中优雅地做到这一点,但我很难跟踪迭代次数(基本上是我的函数被调用的次数)。
我正在尝试编写一个函数来计算一对数字,一个用于答案的下限,另一个用于余数。所以如果你打电话:
divmod(11, 2),你会得到 (5, 1) 回来。
这是我目前所拥有的:
divmod(number : int, divisor : int) =
if number < divisor then
(number, count)
else
divmod(number - divisor, divisor);
显然,我没有设置我的计数变量,所以它不会编译,但这就是算法的想法。剩下的就是将 count 初始化为 0 并能够在递归调用之间传递它。但是我只允许这个函数的两个参数。
但是,我可以编写辅助函数。
想法?
【问题讨论】:
-
SML 是否允许嵌套函数?在这种情况下,您可以使用它来传递 count 参数。
标签: functional-programming sml