2015-04-09 2 views
1

Я пытаюсь написать функцию, которая принимает любое количество аргументов, а затем суммирует их с помощью рекурсии (я не использую встроенную функцию sum. Я принимаю аргументы как int.)Как суммировать список аргументов с рекурсией?

Но мой базовый код doesn Не останавливайся от рекурсии! Любые намеки?

def sum_all(*args): 
if args ==(): 
    return 0 
else: 
    return args[0] + sum_all(args[1:]) 

ответ

7

Вам нужно расширить арг в вашей рекурсии, и not args будет достаточно для теста:

def sum_all(*args): 
    if not args: 
     return 0 
    return args[0] + sum_all(*args[1:]) 
          ^

Python 3 также добавил новый синтаксис, который позволяет распаковывать *args, например:

def sum_all(*args): 
    if not args: 
     return 0 
    a, *b = args 
    return a + sum_all(*b) 
Смежные вопросы