我因发现如何构建递归函数而陷入困境 汇总列表中的元素形成一个特定的起点 到列表的末尾。 例如,当列表a [1,2,3,4,5,6,7,8,9,10]的起始点是索引5 我想得到6 + 7 + 8 + 9 + 10的总和。 对我来说,很难理解递归函数的整个概念。也许您可以帮助我进一步了解该概念。
非常感谢
答案 0 :(得分:3)
定义通常以递归方式计算总和的函数。
要计算列表的子序列之和,请使用列表切片。
def recsum(num_list):
if len(num_list) == 0:
return 0
return num_list[0] + recsum(num_list[1:])
a = [1,2,3,4,5]
recsum(a)
>>> 15
# It means 1+2+3+4+5
recsum(a[1:])
>>> 14
# It means 2+3+4+5
recsum(a[2:4])
>>> 7
# It means 3+4
答案 1 :(得分:0)
简而言之,很难描述递归函数。请仔细阅读评论。
my_recursive_function
将使用我要从中计算总和的list
和index
如果index==list_length
已经遍历了列表,那么在这种情况下,我将返回0。
如果我还没有完成遍历列表,那么我将从下一个索引中再次获取该索引调用my_recursive_function
的值。这是递归开始的地方。
然后返回当前index
和下一个索引值的和。
对于递归,我们应将递归制动条件置于函数的第一部分,否则它可能会无限运行。
def my_recursive_sum(my_list, index):
list_length = len(my_list)
if index == list_length: # If i am next to the last element then return 0 and I won't go next and I shall go back
return 0
return my_list[index] + my_recursive_sum(my_list, index + 1) # value of current index+value of next indices.
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = my_recursive_sum(a, 3)
print(result)
答案 2 :(得分:0)
这就是我解释Taohidul Islam交付的代码的方式: 可能是正确的吗?