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

Рекурсивная функция V

Это основано на уроке, который я учился в курсе введение в компьютерную науку и программирование нам … Теги с новичками, Python.

Это основано на уроке, который я учился в курсе Введение в компьютерную науку и программирование с использованием Python на edx. Это о итерационных против рекурсивных функциях. Разница, как и я понимаю, это то, что итерация несколько раз выполняет несколько строк кода, пока не будет выполнено условие, пока не будет выполнено рекурсивная функция, пока не будет выполнено определенное условие. В этом примере я буду использовать один из каждого, чтобы рассчитать простую функцию питания ^ ex), но вместо того, чтобы использовать Python встроенную функцию экспоненты (**), эти функции будут рассчитать результат, умножая базовое время по себе exp. Это, я признаю, избыточно и, возможно, не очень полезно, но это обучающее упражнение.

Я начну с итеративного примера. Код сначала, тогда я сделаю некоторые наблюдения.

def iterPower(base, exp):
    '''
    base: int or float.
    exp: int >= 0

    returns: int or float, base^exp
    '''
    result = 1
    i=exp
    while i > 0:
        result = result * base
        i -= 1
    return result         

Раньше я использовал цикл с условием, что он выполняет, пока индекс, я больше нуля. Этот индекс начинается со значением показателя, который равен количеству временных базы, которые необходимо умножить сам по себе. При каждом исполнении цикла Exp отсчитывается на один, а вариабельный результат умножается на базу. Я устанавливаю начальную величину результата к 1 по двум причинам. Во-первых, если ввод EXP равен 0, цикл While не будет выполнен, и нам нужен способ для функции вернуть правильный ответ, 1. Кроме того, результат настройки к 1 инициализирует вариабельный результат так, чтобы его можно было умножить на базу в цикле пока. Функция затем возвращает результат.

TLDR: Цветная петля позволяет размножаться по себе основы на себя.

Далее рекурсивный пример:

def recurPower(base, exp):

    '''
    base: int or float.
    exp: int >= 0

    returns: int or float, base^exp
    '''

    if exp == 0:
        return 1
    else:
        return base * recurPower(base,exp-1)

На этот раз репетиции умножения основания само по себе достигаются путем вызова функции Recurpower внутри себя. Каждый раз, когда программа вызывается, переменная exp уменьшается на один, прежде чем подавать в следующий экземпляр функции. Туннель функций внутри функций достигает своего конца, когда EXP равен нулю. Обратите внимание, что если вход Exp равен нулю, функция просто возвращает 1 и вообще не выполняет себя. Я думаю, что эта версия является уборщиком для чтения, но вначале немного сложнее понять. Это сложно отслеживать, в вашей голове, из нескольких экземпляров функции, называемой друг в друге.

Ну, я надеюсь, что вы узнали что-то. Я, конечно, сделал, как я написал это.

Слияние Я новичок в этом сообществе, и я рад, что это место, где я чувствую себя комфортно, рисую на 1. Написание предмета, который я только начинаю учиться, и 2. Написать то, что является довольно основным примером.

P.P.S. Это мой первый раз публикация в Markdown, и мне это нравится. Это было легко, а выход выглядит очень красиво.

Оригинал: “https://dev.to/ekand/recursive-v-iterative-function-51b4”