ввод факторной функции int, вывод real? - PullRequest
1 голос
/ 22 марта 2011

Это абсолютно сводит меня с ума.Предполагаемая простейшая вещь, которую я могу себе представить, и я не могу это сделать.

Я просто хочу, чтобы компьютерный факториал вводил int и выводил реальную.

Я пытался привести множество способов.

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

Ответы [ 3 ]

3 голосов
/ 22 марта 2011

Чтобы преобразовать int в реальное, вы используете Real.fromInt. Если вы хотите вернуть реалы, вы также должны вернуть 1.0 вместо 1 в качестве базового варианта. Таким образом, ваш код становится:

fun factorial 0 = 1.0
  | factorial n = (Real.fromInt n) * factorial(n-1);
1 голос
/ 22 марта 2011

Математически, n! = (n-1)! * п. Если я не понимаю вещи (что возможно; я не знаю ML), ваша функция всегда будет возвращать 1, потому что она никогда не умножается на n.

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

Я не знаю, как вы возвращаете вещественное, а не целое число, или этот код вообще делает это, но по крайней мере это должно дать вам правильное значение.

0 голосов
/ 22 марта 2011
...