0

我有以下功能:

fun power(0,n):int = 1 | power(k,n):int = n*power((k-1),n)

fun myfunction(1,n) = 1 | myfunction(2,n) = 1
| myfunction(x,1) = 1 | myfunction(x:int,n:int) = (1 div power(n,(x-1))) + myfunction(x,n- 1)

我需要做的是从 myfunction 返回一个实值,而不是整数。我尝试指定返回值 (myfunction(x:int,n:int):real),我尝试使用 / 代替 div,还尝试将 1 更改为 1.0,但似乎没有任何效果。任何想法我应该如何返回一个真正的价值?(x 和 n 必须是整数)

4

2 回答 2

3

您还需要将调用结果转换power为实数:

fun myfunction(1, n) = 1.0
  | myfunction(2, n) = 1.0
  | myfunction(x, 1) = 1.0
  | myfunction(x, n) = 1.0 / real(power(n, x - 1)) + myfunction(x, n - 1)
于 2013-10-31T10:59:19.497 回答
2

您需要使用Real.fromInt将 int 转换为实数。此外,在你这样做的情况下,使用/代替div和返回1.0代替。1

于 2013-10-31T10:24:32.920 回答