Программирование Python по моим конспектам. Лекция 29
Пост можно топить, минусить и всячески убивать, ибо в горячем он нахер не нужен, а вот подписчикам пригодится.
Для тех кто не в теме, тут я перевожу свои лекции по питону с языка немецкого на язык человеческий, поэтому- если что- я не виноват. Эти лекции созданы не для того, чтобы сделать из человека говнокодера, а для того, чтобы помочь в сложных темах, которые некому объяснить, а книга по программированию не может с этим помочь. Если вы никогда не были в такой ситуации- значит вы вундеркинд и я хочу от вас детей.
Отвечая на 90% одинаковых вопросов-
Я знаю, что это есть в каждой книге по питону. Это логично. Не логично было бы, если бы это было в книге по анатомии хомяков.
Я это делаю, потому что мне это нравится.
Привет, друзья. Сегодня мы немного усложним нашу жизнь, и объединим прошлую тему о слайсах с рекурсией. Поэтому писать буду мало, но если вы заморочитесь всерьез с тем, что я написал, то я могу поздравить вас с проебанным днем.
Существует множество алгоритмов, которые позволяют нам работать с последовательностями с помощью рекурсии. Для примера возьмем такую задачу.
Необходимо с помощью рекурсии посчитать сумму элементов списка.
Итак, сначала решение, а затем объяснения.
Объявляем функцию summ c параметром list.
если последовательность пуста- вернуть ноль
Иначе к первому элементу последовательности прибавить сумму остальных элементов.
В нашем случае это так выглядит
summ([1,2,5,7])=
1+(summ([2,5,7])+(2+summ([5,7]))+(5+summ([7]))
На практике нам часто приходится искать элимент в последовательности. Конечно, мы можем сделать это, используя оператор in
>>>3 in (3,5,)
>>>True
НО! Бывают случаи, когда необходимо найти в последовательности элименты, которые располагают определенным свойством.
К примеру, дан ряд телефонных номеров в списке.
125 254455
012 124598
598 634654
012 874646
546 654545
необходимо найти все номера, которые начинаются с кода 012
Алгоритм таков.
1. Если список состоит из одного элемента, проверь удовлетворяет ли он условия поиска. Если да, верни список, если нет- верни пустой список
2 Если список состоит из нескольких элементов, раздели этот список на две приблизительно равных части, объедини их и проведи алгоритм заново для обеих частей.
Выглядит так.
На этом пока все.



