首页 > 解决方案 > 需要帮助构建简单的递归函数

问题描述

我有一个包含 93 个数字的数组。我需要对它们进行总计,所以我需要构建一个类似于 SUM = n*G0 + (n-1)*G1 + (n-2)*G3 + ... Gn 的函数

但我不知道如何制作一个这样做的 for 循环

一开始看起来像这样 SUM_0 = G0,SUM_1 = G1+2*G0,SUM_2 G2+2*G1+3*G0, SUM_4 G3+2*G2+3*G1+4*G0

ETC...

标签: pythonfunctionrecursion

解决方案


以下功能将为您提供sum您正在寻找的。至于序列,请再举一个例子。

def mysum(my_array):
    n = len(my_array)
    sum = 0
    for i, j in enumerate(my_array):
        sum += (n - i)*j
    return sum

这是获取序列的方法。

def subsum(an_array):
    l = len(an_array)
    if l == 1:
        return an_array[0]
    else:
        return sum([i*j for i, j in list(zip(an_array[::-1], range(1, l+1)))])
def sequence_from(my_array):
    seq = []
    for i, j in enumerate(my_array):
        seq.append(subsum(my_array[:i+1]))
    return seq
sequence_from([1,2,3,4, 6])

>>>[1, 4, 10, 20, 36]

第一个函数subsum接受一个数组并在返回解决方案之前在该数组上应用序列定义。

第二个函数sequence_from扩展subsum以获得您想要的最终序列。


推荐阅读