需要帮助来构建简单的递归函数

时间:2019-03-29 23:14:30

标签: python function recursion

我有一个数组,其中包含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

等...

2 个答案:

答案 0 :(得分:0)

以下功能将为您提供所需的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,以获得所需的最终序列。

答案 1 :(得分:0)

由于您的问题的标题和标签均为“递归”,因此这里有一个简单的递归解决方案:

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]
>