Python 需要帮助建立简单的递归函数吗
我有一个数组,里面有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*G0Python 需要帮助建立简单的递归函数吗,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
等等 以下函数将为您提供所需的
总和。关于顺序,请再加一个例子
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我还没有这个特权