我需要编写一个程序来接收数字列表并显示累积和,只有递归!
例如:
输入:
1,2,3
输出:
1,3,6
我的问题是我有一些测试要在函数上运行,我必须对所有这些测试都正确,但是我得到了错误的 b/c 我的函数更改了输入。有人知道如何解决它吗?(当然我不能改变测试..)
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([])