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