【问题标题】:How can I implement a summatory with a cycle and recurssion如何使用循环和递归实现摘要
【发布时间】:2016-06-04 21:53:47
【问题描述】:
如果我有这个功能
def P(n):
iterador = 0
while ( iterador <= n ):
print(iterador)
iterador = iterador + 1
P(8)
打印出来的
1
2
3
4
5
6
7
8
为了添加每个数字,我需要做什么,就像这样
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 = 36
我知道会是这样的:
P(n) = 1 + 2 + 3 +...+ n
P(1) = 1
P(2) = P(1) + 2
P(3) = P(2) + 3
.
.
.
P(n) = P(n-1) + n
但我不知道如何将其放入代码中。
谁能帮帮我。
谢谢。
【问题讨论】:
标签:
python
recursion
add
cycle
【解决方案1】:
递归的第一步是使用递归。这意味着该函数必须在某处调用自身。使用递归的下一步是停止递归。这意味着为函数提供一种在返回结果时停止调用自身的方法。对于此函数,您需要从给定的数字开始,然后将其添加到数字 1,然后将其添加到较小的数字 1,依此类推,直到达到 0。
def adder(n):
if n:
return n + adder(n-1)
return n
如果我们将值 8 传递给它,那么 if n: 为真,我们将运行该块。这意味着我们将返回8 加上adder(n-1) 的值,即adder(7)。返回7 加上adder(6),以此类推。当n 是0 时,它只会返回它。这意味着我们有n + adder(n-1) + adder(n-2)... 0,这是我们正在寻找的算法。
【解决方案2】:
好的,谢谢大家的帮助。我应用了上述,这是结果:
def P(n):
if ( (n == 0) ):
resultado = 0
if ( ( n==1 ) ):
resultado = 1
if ( (n>1) ):
resultado = P(n-1) + n
return resultado
def Q(n):
resultado = ( n*(n+1) // 2)
return resultado
def F(n):
serie = []
for x in range ( 0, n + 1 ):
serie.append(x)
print(serie)
n = 8
print(P(n))
print(Q(n))
F(n)