вызывающий func. изменить вход

Мне нужно написать программу, которая получает список номеров и отображает кумулятивную сумму, только с рекурсией!

например:

вход:

1,2,3 

вывод:

 1,3,6 

моя проблема в том, что у меня есть несколько тестов для работы над функцией, и я должен получить правду для всех из них, но я получаю false b / c my func, изменяя входные данные. у кого-то есть идея, как это исправить? (и я не могу изменить тесты, конечно ..)

 def rec_cumsum(numbers): ''' Input: numbers - a list of numbers, Output: a list of cumulative sums of the numbers''' if len(numbers) == 0 : return numbers if len(numbers) == 1 : return numbers numbers[1] = numbers[0] + numbers[1] return [numbers[0]] + rec_cumsum(numbers[1:]) ### Testing code def test_rec_cumsum(numbers): return rec_cumsum(numbers) == [sum(numbers[:i]) for i in range(1,len(numbers)+1)] import random print test_rec_cumsum([1,2,3]) print test_rec_cumsum(random.sample(range(100),30)) print test_rec_cumsum([]) 

2 Solutions collect form web for “вызывающий func. изменить вход”

Это в основном то же самое, но оно не меняет значения чисел.

 def rec_cumsum(numbers): if len(numbers) == 0 : return numbers if len(numbers) == 1 : return numbers return [numbers[0]] + rec_cumsum([numbers[0]+numbers[1]] + numbers[2:]) 

Используйте второй список:

 def rec_cumsum(numbers): if len(numbers) == 0: return [] sums = [ numbers[0] ] for i in range(1, len(numbers)): sums.append(sums[i-1] + numbers[i]) return sums 
  • Как удалить '\ n' из конца строк внутри списка?
  • python csv reader - преобразовать строку в int в строке for при итерации
  • Есть статический конструктор или статический инициализатор в Python?
  • Python "SyntaxError: не-ASCII-символ '\ xe2' в файле"
  • Получение текущего времени с часовым поясом в python?
  • Возвращаемый список элементов в списке больше некоторого значения
  • Принятие только чисел в качестве входных данных в Python
  • Python - PYTHONPATH в linux
  • Django Celery Получил незарегистрированную задачу типа 'appname.tasks.add'
  • Выполните операцию строки для каждого элемента в списке Python
  • ImportError: нет модуля с именем apiclient.discovery
  • Python - лучший язык программирования в мире.