实数与整数的SML幂运算
我写了一个函数,它用基数b和指数e进行幂运算,如下所示:实数与整数的SML幂运算,sml,smlnj,exponent,Sml,Smlnj,Exponent,我写了一个函数,它用基数b和指数e进行幂运算,如下所示: fun power b e = if e = 0 then 1 else b * power b (e-1); 显然,这对整数有效,如输出所示: val power = fn : int -> int -> int 但是,我希望它取一个实数表示b,取一个整数表示e。我尝试使用以下方法: fun power (b : real) (e : int) = if e = 0 then 1 else b * power b (e-
fun power b e = if e = 0 then 1 else b * power b (e-1);
显然,这对整数有效,如输出所示:
val power = fn : int -> int -> int
但是,我希望它取一个实数表示b,取一个整数表示e。我尝试使用以下方法:
fun power (b : real) (e : int) = if e = 0 then 1 else b * power b (e-1);
但这给了我错误。感谢您的帮助。为以后遇到同样问题的其他人提供帮助: 你必须强制函数返回一个实数,然后返回一个实数 返回:
val power = fn : real -> int -> real
fun power b e=如果e=0,则为1.0,否则b*power b(e-1)代码>也可以工作。1.0
real literal对于SML的类型推断来说已经足够了。考虑到这一点,:real
是多余的(尽管无害)。顺便说一句,如果您真的要实现这一点,您可能希望使用,而不是线性乘以b
e
val power = fn : real -> int -> real