Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

За такое решение факториала по попе надают не сильно?

Celtic Hammer Мудрец (16751), закрыт 3 месяца назад
 const f = n => n == 1? 1: f(n - 1) * n 
alert(f(8))
Лучший ответ
Андрей Высший разум (468975) 4 месяца назад
Сильно надают. Каждый рекурсивный вызов - это лишние затраты времени и резервирование места в совсем не резиновом стеке. Рекурсию в императивных языках имеет смысл применять только там, где она сильно упрощает код и при этом не увеличивает вычислительную сложность алгоритма.

P.S. Любой цикл можно заменить на рекурсию, а любую рекурсию можно заменить на цикл + стек (в простых случаях, к которым относится и факториал, только на цикл).
ПапаВысший разум (146197) 4 месяца назад
Ну, если бы он написал рекурсию не через задницу, а по-нормальному, то была бы применима хвостовая оптимизация, которую компилятор развернул бы в тот же цикл. Правда, я не в курсе, умеет ли это жаваскрипт.
Остальные ответы
Андер Кріп Знаток (271) 4 месяца назад
Сильно! Я бы ножом пырнул
Trumann Мастер (1819) 4 месяца назад
В угол поставят и на 10 минут без сладкого
Имя Фамилия Гуру (3162) 4 месяца назад
Я бы убил вообще и без компьютера оставил
Огурчик =) Мастер (1875) 4 месяца назад
На пику посадят, если математичке сдашь
Мозг Сверхразумович Гуру (3129) 4 месяца назад
В ачко отбойный молоток засунут
Лайт Ягами Искусственный Интеллект (317267) 4 месяца назад
При больших значениях программа быстро упадёт с переполнением стэка, и будешь гадать, как она так у тебя забила его.
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (268785) 4 месяца назад
было бы прекрасно, если бы js мог полностью оптимизировать хвостовую рекурсию. А пока может получиться так:


обойти переполнение стека можно ленивыми вычислениями, но не нужно... ахахахъ
ПавелПросветленный (25781) 4 месяца назад
А при чём здесь переполнение стэка? Обычный цикл то же самое выведет.
Хоть в курсе сколько будет 1000!?
Тут нужен BigInt
ПавелПросветленный (25781) 4 месяца назад
И размер стэка куда более 1000. Даже Internet Explorer 6 справился бы.
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (268785) Рукажоп, верно, стек не зависит от величин, можно проверить сколько там уровней
Андрей Устинов Мастер (2175) 4 месяца назад
Рекурсия с большими числами будет перегружать стек. Лучше использовать обычный цикл for
Похожие вопросы