Каррированное сложение (Curried Add)

Верните из add(a) функцию, которая принимает b и использует a из замыкания. Вызов add(a)(b) вычислит a + b; промежуточную функцию можно переиспользовать.

Короткий ответ

Что ответить на собеседовании

Верните из add(a) функцию, которая принимает b и использует a из замыкания. Вызов add(a)(b) вычислит a + b; промежуточную функцию можно переиспользовать.

Подробный разбор

Ответ с пояснениями

Условие

Каррированное сложение (Curried Add)

Условие:

Реализуйте функцию add(a), которая принимает одно число и возвращает другую функцию, принимающую второе число. Итоговый вызов возвращает сумму двух чисел.

Входные данные: два числа a и b, передаваемые через каррирование: add(a)(b)

Выходные данные: число — сумма a + b

Ограничения:

  • -10^6 <= a, b <= 10^6
  • a и b — целые числа

Пример:

Вход: add(3)(5) Выход: 8

Вход: add(-1)(1) Выход: 0

Ответ

Верните из add(a) функцию, которая принимает b и использует a из замыкания. Вызов add(a)(b) вычислит a + b; промежуточную функцию можно переиспользовать.

def add(a):
    def add_second(b):
        return a + b
    return add_second

add(3)(5)  # 8
add(-1)(1)  # 0

Краткий эквивалент — def add(a): return lambda b: a + b. Для заданного диапазона целых время и дополнительная память постоянные. Это каррирование функции двух аргументов, а не накопление произвольной цепочки вызовов.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее