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

Как объяснить человеку, что такое рекурсия?

~ Просветленный (48090), закрыт 2 года назад
На пример факториала не понимает, по этому видео тоже https://www.youtube.com/watch?v=NOaSY5pJmyc не понимает.
Лучший ответ
Андрей Высший разум (482286) 2 года назад
Бессмысленно объяснять рекурсию на примере факториала. Это слишком примитивная задача для того, чтобы что-то понять.

1. Начать с объяснения, что такое стек и как он применяется на практике.
2. Разобрать задачу, легко решаемую с помощью цикла и стека и сложно решаемую только циклом (например, поиск в двоичном дереве).
3. Рассказать про аппаратный стек процессора.
4. Объяснить, что локальные переменные подпрограммы хранятся в стеке. Что вызов подпрограммы - это запись в стек, а возврат из подпрограммы - удаление из стека.
5. Перейти к рекурсивной версии алгоритма, разобранного в п.2. Показать, что рекурсия - всего лишь более удобная запись цикла + стека.
6. Перейти к теме косвенной рекурсии - например, на примере грамматического разбора методом рекурсивного спуска.

P.S. Непонимание рекурсии - это отсутствие базовой математической подготовки. Не школьной, а необходимой программисту.
Остальные ответы
Άηϑρέΰ ҂ Искусственный Интеллект (180094) 2 года назад
ну тут уже ничего не поможет
~Просветленный (48090) 2 года назад
Скорее все просто не дано.
Саня Семенов Оракул (60575) 2 года назад
объясни как песок грузить лопатой потом скажи что либо программирование либо это
Ch dG Гуру (3487) 2 года назад
Скинь ему картинку
Denis_69 Искусственный Интеллект (145949) 2 года назад
Если после Хирьянова не понимает , то пациент безнадежен и его нужно эвтаназировать
~Просветленный (48090) 2 года назад
Не дано скорее всего.
Молот Шотландцев Высший разум (303096) 2 года назад
Раз на примере факториала - да будет так. На языке Python
 def factorial(n, acc=1): 
"calculate a factorial"
if n == 0:
return acc
return factorial(n-1, n*acc)

print factorial(10)
Разъяснение происходящего:
изначально n = 10 acc = 1
acc = 10 * 1
acc = 10
В следующем вызове прописано n - 1
10 - 1 = 9
n = 9
acc = 9 * 10
acc = 90
Следующий вызов. Опять n - 1
n было 9, значит теперь n = 8
acc = 8 * 90
acc = 720

... и далее выполняем n - 1 пока n не станет равен 0
Dmitry Оракул (63585) 2 года назад
Например когда функция вызывает саму себя.
Иван Сигаев Искусственный Интеллект (156799) 2 года назад
Чтобы объяснить человеку, что такое рекурсия - нужно объяснить человеку, что такое рекурсия (с)
печальный житель Земли Оракул (90436) 2 года назад
Никак. Факториала не понимает, а в программисты лезет?
Гнать таких в шею!
~Просветленный (48090) 2 года назад
Факториал это вроде 8 класс?
Андрей Высший разум (482286) Семен, В 8 классе изучают комбинаторику??? Сомневаюсь.
Похожие вопросы