Жаль, преподаватели так не умеют объяснять
наверное учители, я помню преподавателей, так мне электродинамику на пальцах показали
а препод по химии у меня вообще бог был
тот что H2O в C2H5OH c примесями превращал?
его не было
Ещё бы, такому таланту в ВУЗе гнить-то!
Проблема как бы в том, что таких преподавателей мы всегда запоминаем, потому что их единицы.
Хотя умение объяснять вообще-то как бы главное профессиональное требование.
Хотя умение объяснять вообще-то как бы главное профессиональное требование.
Пальцы в розетку?
У на препод так и объяснял тем кто не понял
А правда что теперь в аноне работает скрипт рандомного деанона? Или это шутки-байки?
Бывает в аноне деанонят, бывает на глагной анонят. Всякое бывает.
Я помню в аноне еще в древнее бытие могло раздеанонить автора прста.
Рандом рандом анон рандом.
Хвостовая рекурсия может быть оптимизирована в нерекурсивный цикл.
Можешь мне, как гуманитарию, объяснить, что ты сейчас сказал?
Мое первое образование инженреное, но я тоже нихуя не понял.
Разве рекурсия не является более оптимизированной чем цикл?
Разве рекурсия не является более оптимизированной чем цикл?
с чего бы рекурсии быть более оптимизированой? ей ведь надо в два конца идти и как-то помнить аргументы
В смысле размера кода. Нас по этому поводу дрючили больше, т.к. предполагалось что мы будет писать программы для всяких мелких реле на линии АСУ, у которых по килобайту памяти.
Тогда рекурсия точно не вариант - она быстро забьет стек обратными адресами и привет.
Это будет сложно. Смысл в том, что вместо засирания стека ещё одной копией аргументов и локальных переменных функции, я просто переназначаю им новые значения исходя из того, что было посчитано до хвоста, попутно дополняя выходную переменную, а затем запускаю всё сначала.
https://ru.wikipedia.org/wiki/Хвостовая_рекурсия
https://ru.wikipedia.org/wiki/Хвостовая_рекурсия
Я ведь попросил объяснить как гуманитарию :(
ОК, попытка №2.
У попа помимо собаки, была неупоминаемая бесконечная тетрадочка, в которую он записывал свои похождения, дабы когда-нибудь после вечности записать получившийся бесконечный трактат на могильной плите. Так что он мог убить собак сам, а не переносить ответственность на его персонажа во вложенном рассказе.
У попа помимо собаки, была неупоминаемая бесконечная тетрадочка, в которую он записывал свои похождения, дабы когда-нибудь после вечности записать получившийся бесконечный трактат на могильной плите. Так что он мог убить собак сам, а не переносить ответственность на его персонажа во вложенном рассказе.
"У попа была собака, я её убил" - так что ли?
Т.е. это он убил бесконечное множество собак, а не гипотетические попы с могильного креста, я правильно понял?
Он убил бы всех сам, если бы занялся оптимизацией и избавился от рекурсии, преобразовав алгоритм в бесконечный цикл.
Цикл/рекурсия:
Цикл - это повторение чего-то (1), рекурсия - тоже, но в ней каждое следующее повторение вложено в предыдущее (2).
Черный прямоугольник - повторяющийся блок, внутри него могут быть операции, текст "у попа была собака" или еще что-нибудь - синий прямоугольник.
Хвостовая рекурсия:
Если в рекурсии каждый следующий блок вставляется в самый конец предыдущего, то по сути полезные действия (синий прямоугольник) выполняются так же, как и в цикле. Тогда рекурсию (2) можно заменить циклом (1).
В (3) тоже рекурсия, но блоки вкладываются в середину, а не в конец, поэтому порядок полезных операций другой, и его циклом (1) заменить нельзя.
Почему она лучше:
Во время выполнения любой программы, когда выполняются действия из какого-то конкретного синего прямоугольника в памяти хранятся все блоки, в которые он вложен. Это называется стеком вызовов, его размер ограничен. В случае (2) и (3) если нужно 100 повторений, то в стеке будет храниться максимум 100 вызовов. В случае (1) в стеке будет максимум 1 вызов.
Цикл - это повторение чего-то (1), рекурсия - тоже, но в ней каждое следующее повторение вложено в предыдущее (2).
Черный прямоугольник - повторяющийся блок, внутри него могут быть операции, текст "у попа была собака" или еще что-нибудь - синий прямоугольник.
Хвостовая рекурсия:
Если в рекурсии каждый следующий блок вставляется в самый конец предыдущего, то по сути полезные действия (синий прямоугольник) выполняются так же, как и в цикле. Тогда рекурсию (2) можно заменить циклом (1).
В (3) тоже рекурсия, но блоки вкладываются в середину, а не в конец, поэтому порядок полезных операций другой, и его циклом (1) заменить нельзя.
Почему она лучше:
Во время выполнения любой программы, когда выполняются действия из какого-то конкретного синего прямоугольника в памяти хранятся все блоки, в которые он вложен. Это называется стеком вызовов, его размер ограничен. В случае (2) и (3) если нужно 100 повторений, то в стеке будет храниться максимум 100 вызовов. В случае (1) в стеке будет максимум 1 вызов.
А на кой хуй вообще писать хвостовую рекурсию? Все равно никакого стейта сохранять не надо - в чем смысл городить огород, и почему сразу не ёбнуть цикл?
это надо чтоб было непонятно
И тут Безруков...
чтобы понять рекурсию, надо сперва понять рекурсию
Вот, красавчик даже мне дебилу теперь понятно стало! Спасибо сударь.
Не верь ему, кольцо — это цикл, но не рекурсия. Лента эскалатора самое настоящее кольцо. Рекурсия — это как рот изо рта изо рта изо рта ... изо рта чужого. Пример рекурсии в природе - это фрактальные образования типа деревьев.
Наоборот же, после отработки команд цикла мы перемещаемся в его начало, так что цикл кольцо. А в бесконечной рекурсии мы погружаемся глубже и глубже, так что это как раз лестница, которой хватит, пока есть ресурсы на следующую ступеньку.
Рекурсивный салат: огурцы, помидоры и салат
круг и спираль
А ты сразу не мог написать? Всё же понятно и в двух словах.
А можно мне тоже вопрос по работе "Реактора" задать?
В общем есть такая проблема, читаю себе Реактор, какой-нибудь длинный тред, тут меня куда-то отвлекли/стал читать другую вкладку браузера/куда-то вышел на полчаса. Потом вернулся, опять открыл вкладку с Реактором и продолжил читать тот же тред, захотелось кому-то поставить "плюсик" или "минус", но страница подвисает, приходится полностью закрывать вкладку с Реактором, затем снова открывать и искать тот тред.
Вариант с обновлением страницы тоже не вариант, т.к. после обновления, на этой странице уже совсем другие посты и тред все равно теряется.
Такая проблема на различных конфигурациях компьютера, различных ОС (ХР, 7, 10 и Андроид в том числе) и различных браузерах.
Можно ли это как-то побороть?
В общем есть такая проблема, читаю себе Реактор, какой-нибудь длинный тред, тут меня куда-то отвлекли/стал читать другую вкладку браузера/куда-то вышел на полчаса. Потом вернулся, опять открыл вкладку с Реактором и продолжил читать тот же тред, захотелось кому-то поставить "плюсик" или "минус", но страница подвисает, приходится полностью закрывать вкладку с Реактором, затем снова открывать и искать тот тред.
Вариант с обновлением страницы тоже не вариант, т.к. после обновления, на этой странице уже совсем другие посты и тред все равно теряется.
Такая проблема на различных конфигурациях компьютера, различных ОС (ХР, 7, 10 и Андроид в том числе) и различных браузерах.
Можно ли это как-то побороть?
Страница устаревает, сверни-разверни комменты к любому посту и все починится.
жестоко))
Сейчас бы боянов попостить, эх, где ты 2007й
ты еще вспомни про цитату №42...
дак как всё-таки пропатчить?
Дык патч же давно вышел!
Сейчас я буду патчить все кеды...
Чтобы написать коммент, необходимо залогиниться