Рубрики
Без рубрики

Воспоминания, рекурсия и для циклов в Питоне объяснены

Автор оригинала: Diva Dugar.

В этой статье мы будем использовать три различных техники в Python для кода основной программы Fibonacci, которая даст сумму последовательности в результате. Последовательность Фибоначчи составляет 0,1,1,2,3,5,8 …

Как вы, возможно, заметили, мы добавляем первое и второе количество 0 и 1, чтобы получить третий номер в последовательности (1) ->. Затем мы добавляем второе и третье количество номеров, чтобы получить 4-го числа в последовательности … и так далее.

Вы можете реализовать этот код в Jupyter, Colab или любой IDE или текстовый редактор, с которым вы чувствуете себя комфортно.

Как кодировать последовательность FIBONACCI с помощью петли для цикла в Python

Здесь я написал базовую программу FIBONACCI с использованием цикла для цикла в Python. Логика позади это просто, и мы уже обсуждали его выше.

Сложность времени является O (n) и пространство сложности – это o (1) или постоянная. Но это на самом деле сложнее, чем эта сложность подразумевает.

Я собираюсь запустить это с Python’s % Timeit модуль. Это позволяет избежать ряда распространенных ловушек для измерения времени выполнения. Вы можете увидеть больше используемых здесь Отказ

Как кодировать последовательность Фибоначчи с рекурсией в Python

Здесь мы реализуем последовательность, используя рекурсию. Рекурсивные функции, как правило, называют себя повторно, пока они не достигнет базового случая. Итак, рекурсия создает структуру дерева.

Если мы возьмем серию Fibonacci из 5, это дерево, которое будет создано рекурсией.

Сложность космического пространства o (n) и момент сложности o (2 ^ n), потому что корневой узел имеет 2 детей и 4 внука. И, как видите, каждый узел имеет 2 детей.

Теперь глубина N, что означает, что мы должны делать это N раз. Кроме того, вы, возможно, заметили, что правильное поддерево меньше левого сумаревки, поэтому истинное время выполнения составляет примерно o (1.6 ^ n ).

Базовый случай: Фибоначчи (2) = FIB (1) + FIB (0) = 1 +.

Пример рекурсивного фибоначчи, безусловно, быстрее, чем для цикла.

Как кодировать последовательность Фибоначчи, используя мемузацию в Python

Memoation – это методика, которая может значительно улучшить производительность рекурсивных функций за счет сокращения вычислительной ответственности.

Это хранит результаты дорогих вызовов функций в массиве или словарь и возвращает кэшированные результаты, когда тот же вход вызывается.

Вы можете увидеть вышеуказанное дерево для справки, и как определенные входы продолжают пересматриваться на каждый звонок.

Сложность времени является O (NLOGN).

Что лучше, рекурсион, для петель или мемузация?

Теперь эти методы не должны быть лучше друг друга. Вам просто нужно знать, когда вам нужно использовать какой. Что, конечно, зависит от ваших требований.

Итерация будет быстрее, чем рекурсия, потому что рекурсия должна иметь дело с рекурсивной рамой стека вызовов. Но, если рекурсия написана на языке, который оптимизирует вызов хвоста, то он устраняет накладные расходы и почти на ногу с петлями.

Наконец, мемузация лучше, когда пространство состояния является разреженным, то есть не все меньшие подпротесы должны быть решены, но только несколько из них.

Спасибо за прочтение! Если вам понравилась эта статья, вы можете Читайте мои другие статьи здесь . Ты можешь Покажите свою признательность за эту статью поделившись этим. Также вы можете Связь со мной на linkedin .