Python:起始点为p的List之和(递归函数)

时间:2018-06-20 14:26:01

标签: python list recursion sum

我因发现如何构建递归函数而陷入困境 汇总列表中的元素形成一个特定的起点 到列表的末尾。 例如,当列表a [1,2,3,4,5,6,7,8,9,10]的起始点是索引5 我想得到6 + 7 + 8 + 9 + 10的总和。 对我来说,很难理解递归函数的整个概念。也许您可以帮助我进一步了解该概念。

非常感谢

3 个答案:

答案 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)

简而言之,很难描述递归函数。请仔细阅读评论。

  1. my_recursive_function将使用我要从中计算总和的listindex

  2. 如果index==list_length已经遍历了列表,那么在这种情况下,我将返回0。

  3. 如果我还没有完成遍历列表,那么我将从下一个索引中再次获取该索引调用my_recursive_function的值。这是递归开始的地方。

  4. 然后返回当前index和下一个索引值的和。

  5. 对于递归,我们应将递归制动条件置于函数的第一部分,否则它可能会无限运行。

    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交付的代码的方式: 可能是正确的吗?

recursion