Решение задачи методом рекурсии вместо цикла

Пытаюсь решить задачку, через цикл, множество и map проще простого, но в условии написано без циклов, только рекурсией.

Код:

def summa(n):

    if n == 1:
        return 1
    else:
        return n + summa(n - 1)

    def main():
        if not (num := input("введите число: ")):
            return
        summa(num)
        main()

Условие:

Напишите программу, которая будет складывать числа, введенные пользователем. Сигналом к окончанию ввода должна служить пустая строка. Отобразите на экране сумму значений (или 0.0, если пользователь сразу же пропустил ввод). Решите эту задачу с использованием рекурсии. В вашей программе не должны присутствовать циклы.

Подсказка:

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


Ответы (1 шт):

Автор решения: MBo

Нет, никакие списки не нужны.

По подсказке: вводим строку.

Если она пустая, возвращаем ноль.

Если непустая, то преобразуем в число (здесь я не учитываю возможность ошибок, ввода произвольного текста), вызываем функцию дальше, и результат складываем с числом, полученным на этом уровне рекурсии

def mysum():
    s = input()
    if s:
        return  int(s) + mysum()
    else:
        return 0

print(mysum())


2
4

6
→ Ссылка