阶乘函数输入int,输出real?

发布于 2024-10-25 19:59:13 字数 170 浏览 0 评论 0原文

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

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

我尝试过以多种方式强制。

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

This is absolutely driving me nuts. The supposed simplest thing I can imagine and I can't do it.

I just want to computer factorial inputting an int and output a real.

I've tried to coerce in numerous way.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你又不是我 2024-11-01 19:59:13

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

fun factorial 0 = 1.0
  | factorial n = (Real.fromInt n) * factorial(n-1);

To convert an int to a real, you use Real.fromInt. If you want to return reals, you should also return 1.0 instead of 1 as the base case. So your code becomes:

fun factorial 0 = 1.0
  | factorial n = (Real.fromInt n) * factorial(n-1);
染火枫林 2024-11-01 19:59:13

从数学上来说,n! = (n-1)! * n .除非我误解了事情(这是可能的;我不懂机器学习),否则你的函数将始终返回 1,因为它永远不会乘以 n。

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

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

Mathematically, n! = (n-1)! * n . Unless i'm misunderstanding things (which is possible; i don't know ML), your function will always return 1 because it's never multiplying by n.

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

I don't know how you return a real rather than an int, or whether this code even does it, but at the very least it should give you a correct value.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文