Java Core, 5 уровень, 12 лекция, Задача: Факториал

День добрый господа.

Описание задачи:
Написать метод, который вычисляет факториал — произведение всех чисел от 1 до введенного числа включая его.
Пример: 4! = factorial(4) = 1*2*3*4 = 24
1. Ввести с консоли число меньше либо равно 150.
2. Реализовать функцию factorial.
3. Если введенное число меньше 0, то вывести 0.
0! = 1

Собственно мой код:

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        try {
            int input = Integer.parseInt(reader.readLine());
            reader.close();
            if (input <= 150)
                System.out.println(factorial(input));
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        }
    }

    public static String factorial(int n) {
        if (n == 0) return "1";
        else if (n < 0) return "0";

        return "" + (n * Integer.parseInt(factorial(n - 1)));
    }
}


Результаты выполнения:
-413
0

0
1

4
24

При отправке задания, прилетают ошибки валидации:
1. Программа должна выводить на экран факториал введенного числа.
2. Метод factorial должен возвращать строковое представление факториала числа переданного ему в качестве параметра.

Ну и мой вопрос — WTF?

UPD 26.04.2017: Вопрос снят. При вводе 150 на выходе имеем 0.