如何用循环和递归实现求和

2024-09-25 16:32:20 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有这个功能

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

但我不知道怎么把它编成代码

有人能帮我一下吗

谢谢


Tags: 代码功能def数字指纹printwhileiterador
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)

递归的第一步是使用递归。这意味着函数必须在某个地方调用自己。使用递归的下一步是停止递归。这意味着提供一种方法,让函数在返回结果时停止调用自身。对于这个函数,您需要从给定的数字开始,然后将它添加到数字-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),依此类推。当n0时,它只返回该值。这意味着我们有n + adder(n-1) + adder(n-2)... 0,这是我们正在寻找的算法

相关问题 更多 >