Python 需要帮助建立简单的递归函数吗

Python 需要帮助建立简单的递归函数吗,python,function,recursion,Python,Function,Recursion,我有一个数组,里面有93个数字。我需要计算它们的总数,所以我需要构建一个函数,类似于SUM=n*G0+(n-1)*G1+(n-2)*G3+。。。Gn 但是我不知道如何做一个for循环来实现这一点 一开始看起来有点像这样 求和0=G0,求和1=G1+2*G0,求和G2+2*G1+3*G0,求和G3+2*G2+3*G1+4*G0 等等 以下函数将为您提供所需的总和。关于顺序,请再加一个例子 def mysum(my_array): n = len(my_array) sum = 0

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

但是我不知道如何做一个for循环来实现这一点

一开始看起来有点像这样 求和0=G0,求和1=G1+2*G0,求和G2+2*G1+3*G0,求和G3+2*G2+3*G1+4*G0


等等

以下函数将为您提供所需的
总和。关于顺序,请再加一个例子

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\u扩展了
subsum
,以获得您想要的最终序列。

由于您的问题的标题和标签都是“递归”,下面是一个简单的递归解决方案:

def calculation(numbers):
    if numbers:
        previous = calculation(numbers[:-1])
        return previous + [sum(numbers) + (previous[-1] if previous else 0)]

    return []

my_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

print(calculation(my_numbers))
输出

> python3 test.py
[1, 4, 10, 20, 35, 56, 84, 120, 165, 220]
>

我们需要更多的信息来了解你到底想解释什么是H0,H1,。。嗯。我猜它们是数组的元素…是的,它们是数组的元素。它们是数字,我试着做一个运行的sumI添加了另一个例子,我不需要求和,虽然,这是一个运行计数,所以它需要乘以这些numbers@JuliaGorman请看我编辑的答案。我正在打字explanation@JuliaGorman如果我的答案解决了你的问题,你能投票支持我的答案并接受它吗?OP在标题和标签中都提到了递归,但我在这个解决方案中没有看到任何递归。@SamuelNde我不能投票支持bc我还没有这个特权