Найти - Пользователи
Полная версия: Рекурсия в Python
Начало » Python для новичков » Рекурсия в Python
1 2
Djony1987
Всем привет!
Начал изучать Python с книжки Учимся программировать вместе с Питоном (Чаплыгин А. Н.). Там есть примеры рекурсии и до меня не доходит как все работает( Подскажите, есть ли книжки по этому языку где подробно объясняется рекурсия?
Если нет, объясните плис как работает эта функция:

def fact(n):
if n == 0:
return 1
return fact(n-1)*n

Спасибо!
SvartalF
Попробуйте на листке бумаги пошагово написать работу функции.
The gray Cardinal
Рекурсия — это вызов функцией самой себя. “Чтобы понять рекурсию, надо понять рекурсию” :).
В данном случае просто возьми небольшое число (например, 3) и попытайся представить себя интерпретатором, т.е. “выполни” сам эту функцию, водя карандашом по экрану.
igor.kaist
По поводу изучения, что это такое, смотри гугл. По запросу “рекурсия”, пройдись по первым ссылкам, куча примеров есть. Рекурсия это не “фишка” именно питона, многие языки позволяют реализовывать рекурсию. Теорию ты должен изучить сам, поэтому в учебнике по питону не рассматривается этот вопрос широко. Оно и правильно, ведь материал по этой теме, преподают даже в школах (ну представь себе, что в учебнике по питону, рассказывалось бы о том, что такое файл, определение функции sin и т.д.)
Djony1987
Спасибо за советы!
Напишу как я понимаю последовательность действий для fact(3)
1. возвращается fact(2)*3
2. возвращается fact(1)*2
3. возвращается fact(0)*1
4. возвращается 1 это это и есть fact(0)
5. возвращается 1*1 и это и есть fact(1)
6. возвращается 1*1*2 и это и есть fact(2)
7. возвращается 1*1*2*3 и это и есть то что нам надо, fact(3)
Я праивльно мыслю? )
Striver
Я правильно мыслю, значит правильно существую!

Да, всё так и есть.
Djony1987
Striver
Я правильно мыслю, значит правильно существую!

Да, всё так и есть.
Это хорошо! Сенк!
Главное более сложные примеры понять))
Striver
По поводу рекурсивного факториала вспомнилось…

Приятель у меня преподом в техникуме работал, рассказывал. Задал он своим лоботрясам подобную программку написать (они Паскаль проходили). А большинство там просто писать без ошибок не в состоянии, какое там программирование. На всю группу был 1 соображающий парень, за 5 мин. лабу сдал и свалил оттуда. Все остальные у него тупо списали. Мой приятель каждому сдающему задавал 1 вопрос: объясни пошагово, как считается в программе факториал 5-ти. И у всех вместо 125-ти 25 получается. Он их заставил найти того, у кого они посписывали, чтобы он им объяснил, как это работает, чтобы они сами смогли объяснить потом.

И ещё по поводу рекурсии.
Когда я Sheme изучать пытался, я до конца так ХВОСТОВУЮ рекурсию и не понял… Не отличаю я её от обычной.
PooH
Djony1987
Главное более сложные примеры понять
Дык прелесть рекурсии именно в том что тебе не надо понимать все целиком, тебе надо понять:
1. Как выполняется единичный вызов
2. Условие выхода
и все ;)
Djony1987
Striver
По поводу рекурсивного факториала вспомнилось…

И ещё по поводу рекурсии.
Когда я Sheme изучать пытался, я до конца так ХВОСТОВУЮ рекурсию и не понял… Не отличаю я её от обычной.
А в чем её суть?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB