阶乘函数输入int,输出真实吗?

时间:2011-03-22 00:31:55

标签: sml smlnj

这绝对让我疯狂。我能想象的最简单的东西,我无法做到。

我只想计算机阶乘输入一个int并输出一个真实的。

我试图以多种方式强迫。

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

3 个答案:

答案 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)