2016-06-04 23 views
1

Wenn ich diese Funktion hatteWie kann ich einen summatory mit einem Zyklus und recurssion implementieren

def P(n): 
    iterador = 0 
    while (iterador <= n): 
     print(iterador) 
     iterador = iterador + 1 
P(8) 

Welche

1 
2 
3 
4 
5 
6 
7 
8 

druckt Was würde ich tun muss, um jede Zahl zu schreiben, diese

1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 = 36 

weiß, dass ich es so etwas wie sein würde:

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

Aber ich weiß nicht, wie es in Code zu setzen.

Könnte jemand mir eine Hand geben.

Danke.

Antwort

2

Der erste Schritt bei der Rekursion ist Rekursion. Das heißt, die Funktion muss sich irgendwo aufrufen. Der nächste Schritt bei der Verwendung der Rekursion ist das Beenden der Rekursion. Das bedeutet, dass die Funktion einen Aufruf der Funktion beenden kann, wenn es Zeit ist, ein Ergebnis zurückzugeben. Für diese Funktion sollten Sie bei der angegebenen Nummer starten, fügen Sie es dann zu Nummer-1, fügen Sie dann, dass die geringere Anzahl-1, und so weiter, bis Sie auf 0.

def adder(n): 
    if n: 
     return n + adder(n-1) 
    return n 

erhalten Wenn wir den Wert 8 übergeben, ist if n: wahr und wir werden diesen Block ausführen. Das heißt, wir geben 8 plus den Wert adder(n-1) zurück, der adder(7) ist. Das gibt 7 plus adder(6) und so weiter zurück. Wenn n0 ist, gibt es das einfach zurück. Das heißt, wir haben n + adder(n-1) + adder(n-2)... 0, das ist der Algorithmus, den wir suchen.

1

Ok, danke für deine Hilfe, alle. Ich habe die oben genannten angewendet, das ist das Ergebnis:

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)