Другие языки программирования и технологии

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

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

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

P.S. Непонимание рекурсии - это отсутствие базовой математической подготовки. Не школьной, а необходимой программисту.
ЖД
Женя Дудикова
91 972
Лучший ответ
Раз на примере факториала - да будет так. На языке 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
ну тут уже ничего не поможет
Виктор Баранов
Виктор Баранов
88 275
Фирдавис Галиев Скорее все просто не дано.
Если после Хирьянова не понимает , то пациент безнадежен и его нужно эвтаназировать
Фирдавис Галиев Не дано скорее всего.
Чтобы объяснить человеку, что такое рекурсия - нужно объяснить человеку, что такое рекурсия (с)
Петр Закутский
Петр Закутский
91 712
объясни как песок грузить лопатой потом скажи что либо программирование либо это
Nurlan Tastenov
Nurlan Tastenov
59 846
Никак. Факториала не понимает, а в программисты лезет?
Гнать таких в шею!
Фирдавис Галиев Факториал это вроде 8 класс?
Например когда функция вызывает саму себя.
Скинь ему картинку