在标准 Ml 中编写幂函数时遇到问题。我正在尝试编写一个名为exptype的函数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 等。