1

这绝对让我发疯。我能想象到的最简单的事情,我做不到。

我只想计算机阶乘输入一个整数并输出一个实数。

我试图以多种方式胁迫。

fun factorial 0 = 1 |
    factorial n = n * factorial(n-1);
4

3 回答 3

3

要将 int 转换为 real,请使用Real.fromInt. 如果你想返回实数,你也应该返回1.0而不是1作为基本情况。所以你的代码变成:

fun factorial 0 = 1.0
  | factorial n = (Real.fromInt n) * factorial(n-1);
于 2011-03-22T01:33:33.797 回答
1

数学上,n! =(n-1)!* n 。除非我误解了事情(这是可能的;我不知道 ML),否则您的函数将始终返回 1,因为它永远不会乘以 n。

fun factorial 0 = 1 |
    factorial n = n * factorial(n-1);

我不知道你如何返回一个实数而不是一个整数,或者这段代码是否真的做到了,但至少它应该给你一个正确的值。

于 2011-03-22T00:38:31.510 回答
0

http://www.standardml.org/Basis/real.html#SIG:REAL.fromInt:VAL

于 2011-03-22T01:29:00.550 回答