Анонимный пользователь
Дополнительно
Как построить рекурсивную функцию в python?
Как построить рекурсивную функцию в python?
41
4
Мне интересно, имели ли вы в виду "рекурсивную" функцию. Вот простой пример рекурсивной функции для вычисления факториала:
Двумя ключевыми элементами рекурсивного алгоритма являются:
n == 0
.факториал(n - 1)
.Рекурсии в Python работает так же, как рекурсии в другом языке, с рекурсивный конструкт определяется себя:
Например, рекурсивные класс может быть бинарное дерево (или любое дерево):
Как уже упоминалось рекурсивная структура должна иметь условие выхода. В этом классе, это не так очевидно, потому что он только повторяется, если новые элементы добавляются, и делает это только один раз лишний.
Также стоит отметить, что в Python по умолчанию есть ограничение на глубину рекурсии, доступных, чтобы избежать поглощая все на компьютере'ютером. На моем компьютере это 1000. Я не'т знать, если это меняется в зависимости от оборудования и т. д. Чтобы увидеть твое :
и чтобы установить его :
редактировать: я могу'т гарантируем, что мое бинарное дерево-это наиболее эффективный дизайн. Если кто может улучшить его, я'd быть рады услышать, как
Допустим, вы хотите построить: u(n+1)=f(u(n)) при u(0)=u0
Одним из решений является определение простой рекурсивной функции:
К сожалению, если вы захотите вычислить большие значения u, то столкнетесь с ошибкой переполнения стека.
Другим решением является простой цикл:
Но если требуется получить несколько значений u для разных значений n, то этот вариант неоптимален. Можно кэшировать все значения в массив, но при этом может возникнуть ошибка, связанная с нехваткой памяти. Вместо этого можно использовать генераторы:
Существует множество других вариантов, но, пожалуй, это основные.
Пример рекурсивной функции:
Запустите его с помощью: