如何使用递归来总结数字列表直到某个索引
How to use recursion to sum up a list of numbers up until a certain index
我必须编写一段代码,利用递归对列表中的数字求和,直到索引等于预先确定的整数值。即
list = [1,4,8,9]
int = 2
sum = 1 + 4 (index 0 and 1)
下面是我到目前为止的代码,但我在第一个 if 语句的逻辑上苦苦挣扎,因此它不起作用。我收到错误 'int' object has no attribute 'index' 任何帮助将不胜感激(PS 非常新的编码 - 如果我的代码不是最好的,很抱歉)!
# Sum Recursion
def Arecursion(Alist,index):
if index > 0: # if the index point in the list matches the integer return the sum
return Alist[index] + Arecursion(Alist,index-1)
else:
return 0
list_test = [1,4,6,7,10]
int_test = 2
print(Arecursion(list_test,int_test))
你正在让它变得比你需要的更复杂。您只需要一个基本情况——当前索引太大,递归——当前索引处的值加上其余值:
def sum_rec(l,max_index, i=0):
if i >= max_index or i >= len(l): # base case
return 0
return l[i] + sum_rec(l, max_index, i+1) # recursion
sum_rec([1, 2, 3, 4], 0)
# 0
sum_rec([1, 2, 3, 4], 1)
# 1
sum_rec([1, 2, 3, 4], 2)
# 3
sum_rec([1, 2, 3, 4], 3)
#6
我必须编写一段代码,利用递归对列表中的数字求和,直到索引等于预先确定的整数值。即
list = [1,4,8,9]
int = 2
sum = 1 + 4 (index 0 and 1)
下面是我到目前为止的代码,但我在第一个 if 语句的逻辑上苦苦挣扎,因此它不起作用。我收到错误 'int' object has no attribute 'index' 任何帮助将不胜感激(PS 非常新的编码 - 如果我的代码不是最好的,很抱歉)!
# Sum Recursion
def Arecursion(Alist,index):
if index > 0: # if the index point in the list matches the integer return the sum
return Alist[index] + Arecursion(Alist,index-1)
else:
return 0
list_test = [1,4,6,7,10]
int_test = 2
print(Arecursion(list_test,int_test))
你正在让它变得比你需要的更复杂。您只需要一个基本情况——当前索引太大,递归——当前索引处的值加上其余值:
def sum_rec(l,max_index, i=0):
if i >= max_index or i >= len(l): # base case
return 0
return l[i] + sum_rec(l, max_index, i+1) # recursion
sum_rec([1, 2, 3, 4], 0)
# 0
sum_rec([1, 2, 3, 4], 1)
# 1
sum_rec([1, 2, 3, 4], 2)
# 3
sum_rec([1, 2, 3, 4], 3)
#6