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

Программное обеспечение Está Cada VEZ Mais EM TUDO, E A A “Internet Das CoiSas” ém próximo Passo No Caminho da Nospython3 SA Sociedade Tecnológica. Программирование – Упражнение 12 C – Рекурсивные и лямбда Функции

Рекурсивные функции и лямбда Это продолжение упражнений 12 B (функция, которая … Теги с Python, учебником, начинающим, программированием.

Рекурсивные функции и лямбда

Это продолжение Упражнение 12 B (функция, которая возвращает значение)

Рекурсивные функции

Мы обсудили, как создать функцию, как пройти аргумент на функцию, а затем, как позвонить в функцию. Мы много сделали. Это заплатит нам хорошо, если мы часто будем часто делать перерывы.

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

В этом упражнении мы обсудили бы больше на функцию. Рекурсивная функция вызывает себя. Это делает это до тех пор, пока базовый случай не станет ложным.

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

Пусть целочисленный вход будет, n . n факториал это, Ней! = N * (N - 1) * (n - 2) * (n - 3) * ... * 1 . Наш базовый случай – 1. Когда мы доберемся до 1 мы нарушаем или прекращаем рекурсивную функцию.

Пример 1 – для цикла

factorial = 1
n = int(input("Enter n: "))

if n < 1:
    print(1)
else:
    for i in range(1, n+1):
        factorial *= i

    print(factorial)

# input  output
#    3     6
#    5     720
#    15    1307674368000

Пример 2. – функция

Теперь мы реализуем вышеупомянутое использование рекурсивной функции.

def factorial(n):
    if n < 1:
        return 1

    else:
        return n * factorial(n-1)
  • def factorial (n) : Мы определяем функцию, называемую факториалом, которая принимает целочисленный аргумент, n Отказ
  • Если n <1: return 1 : Мы проверяем базовый чехол и вернем 1. Функция возвращает 1 и выполнение останавливается.
  • остальное: возврат n * факториал (n-1) : если N> 1 мы возвращаемся n умножено на факториал (N-1) Отказ
  • Если n = 5. У нас было бы это:

    • факториал (5) * факториал (4)
    • факториал (5) * 4 * факториал (3)
    • факториал (5) * 4 * 3 * факториал (2)
    • факториал (5) * 4 * 3 * 2 * факториал (1)
    • факториал (5) * 4 * 3 * 2 * 1
    • факториал (5)

Пример 3.

Реализация Euclid GCD алгоритм Отказ Мы заинтересованы в величайшем общем делитере двух чисел, GCD (A, B) Отказ

Алгоритм:

  • Пусть А , B быть двумя номерами
  • Пусть R быть оставшейся частью А и B , % B.
  • Проверьте, если R это 0 , B делится А , если так, верните b
  • остальное назначить B к А и R к B и повторить второй шаг
a = int(input("Enter a: "))
b = int(input("Enter b: "))

while True:
    r = a % b

    if r == 0:
        print(b)
        break

    else:
        a = b
        b = r

# a = 72
# b = 96
# gcd(a, b) = 24

Пример 4.

Используя рекурсию.

def gcd(a, b):
    r = a % b

    if r == 0:
        return b

    else:
        return gcd(b, r)

print(gcd(72, 96))  # 24

Давайте сократить этот код

def gcd(a, b):
    if a % b == 0:
        return b

    return gcd(b, a % b)

Функции лямбда

Функция лямбда также известна как анонимная функция – функция без имени. Мы можем сказать, что это одноразовая функция. Мы создаем функцию лямбда, используя лямбда ключевое слово. Просто, (лямбда запятые-отделение-args: тело)

Структура

Давайте рассмотрим функцию, которая увеличивает данное целое число по одному и возвращает значение.

def inc(n):
    return n + 1


print(inc(2))  # 3

Вышеменимый фрагмент использует def Ключевое слово для создания функции. Теперь давайте посмотрим, как мы будем использовать лямбда Ключевое слово для создания той же функции.

Пример 5.

print((lambda x: x+1)(2))  # 3

Таким образом, структура функции лямбда аналогична для нормальной функции. Мы используем лямбда Ключевое слово вместо деф У функции нет имени. Любые параметры являются космическими запятыми, разделенные от ключевого слова lambda. Функциональное тело разделено толстой кишкой, : Отказ

Из примера 5 мы передали аргумент, 2 к функции лямбда. Обратите внимание, как это было передано.

Пример 6.

Мы можем передавать несколько аргументов в функцию лямбда. Обратите внимание, что мы не можем использовать вернуть Функция лямбда. Давайте использовать функцию лямбда для сравнения двух чисел и вернуть меньше числа.

print((lambda a, b: a if a < b else b)(2, 4))  # 2

Обычно мы бы написали,

def min_val(a, b): return a if a < b else b


print(min_val(2, 4))  # 2

Это так же, как:

def min_val(a, b):
    if a < b:
        return a
    else:  #  we can comment out the else:
        return b

Мы можем назначить имя для функции лямбда

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

inc = (lambda n: n + 1)

print(inc(2))  # 3

Можете ли вы сказать разницу между этими двумя фрагментами ниже?

# first func
inc = (lambda x: x + 1)
print(inc(4))

# second func
inc = (lambda x: x + 1)(4)
print(inc)
  • В Первый Func Abambda функция была назначена на Inc Отказ Inc был вызван и аргумент ценности, 4 был пройден. Итак, мы можем сказать, что Inc это функция.

  • В Второй ФУНК , аргумент ценности 4 было передано в функцию лямбда. Результат был назначен на Inc Отказ Итак, Inc это просто другая переменная стоимости, 4 + И не функция.

Практические практики

  • Напишите функцию, чтобы сортировать этот список, [[47, 3, 1, 34], [0. - 3, 4], [7, 21, 13, 37, 8]]
  • Напишите функцию, которая возвращает температуру из градуса Фаренгейта до Степень Цельсия
  • Напишите функцию, которая возвращает сумму чисел между данным диапазоном включительно. Если диапазон это От 1 до 5 , вернуть 15 Отказ
  • Напишите функцию, которая печатает квадраты между данным диапазоном включительно
  • Напишите функцию, которая суммирует отдельные цифры в заданном целом. Дано, 12345 , вернуть 15.
  • Напишите функцию, которая проверяется, если данный год – это скачок года. Для данного вклада будет взорвом году, он должен быть делим на 4, но (и) не делится на 100, или вход делится на 400.

Резюме

  • Функция – это блок код, который выполняет определенную задачу
  • Функция может принимать по крайней мере нулевые аргументы
  • Определение функции
  def function_name(some_args):
      # some code
  • Мы можем вызвать функцию, делая func_name (некоторые_args)
  • Функция позволяет повторно использовать код
  • Функция может использоваться в любой части нашего кода
  • Параметры передаются в функцию при создании функции
  • аргумент – это то, что мы проходим к функции, когда мы называем это
  • вернуть выходит из функции и возвращает значение из функции
  • Используйте аргумент * arg – Tupple, чтобы собрать больше аргументов
  • Функция может быть вызвана как можно больше раз
  • Рекурсивная функция вызывает себя
  • Функция лямбда – это безымянная функция, которая обычно требуется на лету

Оригинал: “https://dev.to/otumianempire/python3-programming-exercise-12-c-2j9j”