【发布时间】:2018-08-11 18:25:33
【问题描述】:
在标准 Ml 中编写幂函数时遇到问题。我正在尝试编写一个名为exp 的函数,类型为int -> int -> int。
应用程序exp b e,对于非负的e,应该返回b^e。
例如,exp 3 2 应该返回 9。exp 必须使用下面提供的函数 compound 来实现。 exp 不应该直接调用自己。这是compound 函数,它接受一个值n、一个函数和一个值x。它所做的只是将函数应用于值 x n 次。
fun compound 0 f x = x
| compound n f x = compound (n-1) f (f x);
我很难弄清楚如何在没有递归的情况下编写这个函数,并且必须使用一个只能使用一个参数的函数的函数。任何人都知道从哪里开始?
这就是我所拥有的:
fun exp b 0 = 1
| exp b e = (compound e (fn x => x*x) b)
我知道这行不通,因为如果我输入 2^5 它会: 2*2、4*4、16*16等。
【问题讨论】:
-
compound递归调用自己...我编辑了问题以使其符合您的意思。 -
函数复合允许递归,但函数exp不允许递归。