这绝对让我发疯。我能想象到的最简单的事情,我做不到。
我只想计算机阶乘输入一个整数并输出一个实数。
我试图以多种方式胁迫。
fun factorial 0 = 1 |
factorial n = n * factorial(n-1);
要将 int 转换为 real,请使用Real.fromInt
. 如果你想返回实数,你也应该返回1.0
而不是1
作为基本情况。所以你的代码变成:
fun factorial 0 = 1.0
| factorial n = (Real.fromInt n) * factorial(n-1);
数学上,n! =(n-1)!* n 。除非我误解了事情(这是可能的;我不知道 ML),否则您的函数将始终返回 1,因为它永远不会乘以 n。
fun factorial 0 = 1 |
factorial n = n * factorial(n-1);
我不知道你如何返回一个实数而不是一个整数,或者这段代码是否真的做到了,但至少它应该给你一个正确的值。