рекурсия - как получить целое число без десятичной - PullRequest
0 голосов
/ 05 сентября 2018
import java.util.*;
// Algorithm and Java program to find a Factorial of a number using recursion

public class factorial {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.println("Please enter a number: ");

        int n = input.nextInt();
        System.out.println("The factorial of " + n + " is " + factorial(n));

    }

    private  static double factorial (int n)
    {
        if (n == 1)
            return 1;
        else
            return n * factorial(n - 1);
    }
}

Пожалуйста, введите номер: 8 Коэффициент 8 равен 40320,0

Процесс завершен с кодом выхода 0 Как получить целое число без десятичной дроби?

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Заменить

System.out.println("The factorial of " + n + " is " + factorial(n));

от

System.out.println("The factorial of " + n + " is " + (int) factorial(n));

ИЛИ (лучше)

Заменить

private static double factorial (int n)

от

private static int factorial(int n)


Объяснение

Поскольку ваш метод возвращает double, вам необходимо преобразовать его в int, в котором нет десятичных разрядов. Возможно, вы захотите взглянуть на методы класса Math, такие как round(), floor() и т. Д.

0 голосов
/ 05 сентября 2018

Вы можете получить значение int или Double, позвонив по номеру:

Double n = new Double(40320.99);
int i = n.intValue();

Вы можете напрямую распечатать результат, независимо от того, int или Double Значение типа данных.

...