Решение задачи методом рекурсии вместо цикла
Пытаюсь решить задачку, через цикл, множество и 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 шт):
Нет, никакие списки не нужны.
По подсказке: вводим строку.
Если она пустая, возвращаем ноль.
Если непустая, то преобразуем в число (здесь я не учитываю возможность ошибок, ввода произвольного текста), вызываем функцию дальше, и результат складываем с числом, полученным на этом уровне рекурсии
def mysum():
s = input()
if s:
return int(s) + mysum()
else:
return 0
print(mysum())
2
4
6