Факториал

  • 8
  • Недоступна
На планете Линейный Хаос поиском факториала двузначных чисел на их планете принято занимать младенцев. Ну а мы подойдём по-взрослому, по-программистски, и напишем метод, вычисляющий факториал вплоть до введённого числа.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (418)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Михаил Лисицкий
Уровень 22, Ukraine
23 сентября, 20:52
Решил через элементарный цикл for за 3 минуты, ублажал валидатор еще час.
В`ячеслав Чудновський
Уровень 20, Germany
3 сентября, 10:47
😋
public static String factorial(int n) {
    if (n < 0) return "0";
    else if (n == 1 || n == 0) return "1";
    else return new BigDecimal(n).multiply(new BigDecimal(factorial(n - 1))).toString();
}
Uladzimir Technical writer
10 сентября, 07:20
На самом деле с точки зрения алгоритмов решение через рекурсию хуже простого for i и требует от системы больше ресурсов. Чем больше число вызовов рекурсивной функции, тем эта разница будет больше. У меня эта задача при вводе 150 рекурсивно вычисляется за 39мс, а циклом 5мс. Плюс читаемость кода ужасная . Поэтому обычно там где можно обойтись так не рекомендуется делать
Павел Соловьёв докер - механизатор в Порт
27 августа, 05:41
Вы решили задачу лучше, чем 79% учеников но при этом я чувствую себя таким тупым . такие грабли горожу .
Богдан
Уровень 18, Россия
27 июля, 21:16
Решил рекурсивно, с подсказками валидатора, поменяв сначала int на long, а потом long на BigInteger
return n * factorial(n - 1)
SWK
Уровень 26
17 августа, 09:14
Требования:
Метод factorial должен возвращать строковое представление факториала
числа, переданного ему в качестве параметра.
Uladzimir Technical writer
10 сентября, 07:19
На самом деле с точки зрения алгоритмов решение через рекурсию хуже простого for i и требует от системы больше ресурсов. Чем больше число вызовов рекурсивной функции, тем эта разница будет больше. У меня эта задача при вводе 150 рекурсивно вычисляется за 39мс, а циклом 5мс. Плюс читаемость кода сильно страдает от рекурсии. Поэтому обычно так не рекомендуется
An N
Уровень 29, Cheboksary, Russian Federation
24 июля, 16:08
Почему использован BigDecimal, а не BigInteger ? Факториал дробного числа тоже существует?
Павел Соловьёв докер - механизатор в Порт
27 августа, 05:42
import BigDecimal ни к чему не обязывает , я импортировал BigInteger
Михаил
Уровень 20, Харьков, Украина
16 июля, 01:28
Задача с подвохом если бы тип возвращаемого значения был BigDecimal было бы попроще, а так String сбивает с толку
Loony.java
Уровень 28, Uzbekistan
13 сентября, 19:54
если бы я в импорт не заглянул, я бы и не подумал обращаться к BigDecimal
Laziz Karimov
Уровень 26, Noyabrsk
14 июля, 09:27
return "" + ...;
Павел Соловьёв докер - механизатор в Порт
27 августа, 05:43
а потом читаешь ...toString и понимаешь , ага вот тут я тоже мог его использовать , но в очередной раз забыл о его существовании .
Anonymous #3062817
Уровень 40, Киев, Ukraine
13 июня, 07:02
Статья которая может помочь разобраться с рекурсией
Blynchik Работает в Pegas Touristik
2 июня, 06:03
150! в double не влезает?
Евгений Янин
Уровень 23, Харьков, Украина
22 июня, 11:11
BigDecimal
Сонмониус Java Developer в Face IT
31 мая, 19:34
Хорошо что есть Гугл и СтекОверФло)