Другие языки программирования и технологии
Как объяснить человеку, что такое рекурсия?
На пример факториала не понимает, по этому видео тоже https://www.youtube.com/watch?v=NOaSY5pJmyc не понимает.
Бессмысленно объяснять рекурсию на примере факториала. Это слишком примитивная задача для того, чтобы что-то понять.
1. Начать с объяснения, что такое стек и как он применяется на практике.
2. Разобрать задачу, легко решаемую с помощью цикла и стека и сложно решаемую только циклом (например, поиск в двоичном дереве).
3. Рассказать про аппаратный стек процессора.
4. Объяснить, что локальные переменные подпрограммы хранятся в стеке. Что вызов подпрограммы - это запись в стек, а возврат из подпрограммы - удаление из стека.
5. Перейти к рекурсивной версии алгоритма, разобранного в п.2. Показать, что рекурсия - всего лишь более удобная запись цикла + стека.
6. Перейти к теме косвенной рекурсии - например, на примере грамматического разбора методом рекурсивного спуска.
P.S. Непонимание рекурсии - это отсутствие базовой математической подготовки. Не школьной, а необходимой программисту.
1. Начать с объяснения, что такое стек и как он применяется на практике.
2. Разобрать задачу, легко решаемую с помощью цикла и стека и сложно решаемую только циклом (например, поиск в двоичном дереве).
3. Рассказать про аппаратный стек процессора.
4. Объяснить, что локальные переменные подпрограммы хранятся в стеке. Что вызов подпрограммы - это запись в стек, а возврат из подпрограммы - удаление из стека.
5. Перейти к рекурсивной версии алгоритма, разобранного в п.2. Показать, что рекурсия - всего лишь более удобная запись цикла + стека.
6. Перейти к теме косвенной рекурсии - например, на примере грамматического разбора методом рекурсивного спуска.
P.S. Непонимание рекурсии - это отсутствие базовой математической подготовки. Не школьной, а необходимой программисту.
Раз на примере факториала - да будет так. На языке Python
изначально 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
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
ну тут уже ничего не поможет
Фирдавис Галиев
Скорее все просто не дано.
Если после Хирьянова не понимает , то пациент безнадежен и его нужно эвтаназировать
Фирдавис Галиев
Не дано скорее всего.
Чтобы объяснить человеку, что такое рекурсия - нужно объяснить человеку, что такое рекурсия (с)
объясни как песок грузить лопатой потом скажи что либо программирование либо это
Никак. Факториала не понимает, а в программисты лезет?
Гнать таких в шею!
Гнать таких в шею!
Фирдавис Галиев
Факториал это вроде 8 класс?
Например когда функция вызывает саму себя.
Скинь ему картинку

Похожие вопросы
- Стоит ли использовать рекурсию в целом? (+)
- Рекурсия, возникли проблемы с изучением рекурсии, не могли бы подсказать книги или видео про обьяснение рекурсии
- Ошибка в программе delphi. Рекурсия
- Вопрос тем, кто хорошо знаком с рекурсией. Язык Си (но это второстепенно)...
- Подскажите практическую задачку на углубленное понимание что такое рекурсия?
- Рекурсия в C++ объясните на самом простейшем примере для чайника
- Прошу объяснить как работает рекурсия в конкретном примере:
- Сравнить 2 массива через рекурсию
- Задачка на Delphi, рекурсия...
- Рекурсия ф-ии