2013-10-31 30 views
0

我有以下功能:SML - 如何從一個函數返回一個真正的整數?

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必須是整數)

回答

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) 
+0

謝謝你,這完美地工作! – user2916280

2

您需要使用Real.fromInt將int轉換爲實數。此外,使用/而不是div並返回1.0而不是1在您執行此操作的情況下。

相關問題