我需要编写一个程序,用def计算数字列表中的累积和,但只能用递归计算。
我做到了,但现在我需要编写相同的程序而不使用方法sum
,但到目前为止还没有成功。
有什么想法吗?
我的代码:
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
return rec_cumsum(numbers[:-1])+ [sum(numbers)]
输入:
1 [1,2,3]
2 [2, 2, 2, 3]
输出:
1 [1,3,6]
2 [2, 4, 6, 9]
我的代码没有sum
:
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
my_list=[]
rec_cumsum(my_list + numbers)
my_list[0]=numbers[0]
rec_cumsum(my_list)
temp_sum=my_list[0]+numbers[-1]
my_list[0]=temp_sum
return my_list
答案 0 :(得分:3)
我会建议这样的事情而不添加额外的参数:
[增订]
def rec(n):
if len(n) < 2: return n
n[1] = n[0] + n[1]
return [n[0]] + rec(n[1:])
print rec([1,2,3,4])
[1, 3, 6, 10]
答案 1 :(得分:2)
你能做的是: -
last
和temp list
的{{1}}元素。并将总和添加到临时列表中作为新元素。**这是上述步骤的代码。您可以将其与您实施的那个进行比较,并查看出错的地方: -
first element
答案 2 :(得分:2)
另一种解决方案是:
def rec(n):
if len(n) < 2: return n
rest = rec(n[:-1])
return rest + [rest[-1] + n[-1]]
这个对我来说更直观..