在标准 Ml 中编写幂函数时遇到问题。我正在尝试编写一个名为exp
type的函数int -> int -> int
。
应用程序exp b e
,对于非负数e
,应该返回b^e
。
例如,exp 3 2
应该返回 9。exp
必须使用compound
下面提供的函数来实现。exp
不应该直接调用自己。这是compound
函数,它接受一个值n
、一个函数和一个值x
。它所做的只是将函数应用于值 xn 次。
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 等。