C. Многочлен N-ой степени

Напишите функцию make_equation, которая по заданным коэффициентам строит строку, описывающую валидное с точки зрения Python выражение без использования оператора возведения в степень.

Многочлен второй степени с коэффициентами ab и c, например, можно записать в виде:
((a)∗x+b)∗x+c

Примечание

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

Пример

Ввод

result = make_equation(3, 2, 1)

Вывод

# Вызов make_equation(3, 2, 1)
# Вызов make_equation(3, 2)
# Вызов make_equation(3)
result = '((3) * x + 2) * x + 1'

Ввод

result = make_equation(3, 1, 5, 3)

Вывод

# Вызов make_equation(3, 1, 5, 3)
# Вызов make_equation(3, 1, 5)
# Вызов make_equation(3, 1)
# Вызов make_equation(3)
result = '(((3) * x + 1) * x + 5) * x + 3'

Решение

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

Итак нам даны числа, мы должны заворачивать их в скобочки и приписывать к ним * x + если это не последнее число в последовательности.

Очевидным граничным условияем для нас является исчерпание списка чисел. То есть если у нас есть список только из одного элемента, то мы возвращаем число, в противном случае изымаем последний элемент списка и делаем рекурсивный вызов функции, завернутый в скобочки, к которому приписываем умножение на x, и прибавляем текущее последнее значение списка.

Для тех, что прочитал статью будет очевидно, что это метод “всплытия”, когда мы используем полученные данные только тогда, когда выходим из рекурсии.

Посмотреть код

Решение

Python
def make_equation(*num):
    if len(num) == 1:
        return f'{num[0]}'
    else:
        return f'({make_equation(*num[:-1])}) * x + {num[-1]}'

Решение

Подписаться
Уведомить о
guest
6 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии