Rekurencja dla licznb x + 3

0

Witam
Mam ciąg liczb: 4,7,10,13,16,19,22,25,28... Jak to ująć rekurencyjnie żeby po wpisaniu n-tego wyrazu ciągu pojawił mi się wynik.
W pętli jeszcze jakoś napisałem:

def algorytm_dodawania_pętla(x):
	algorytm_dodawania_pętla = 4
	for i in range(4, x + 3):
		algorytm_dodawania_pętla += 3
	return algorytm_dodawania_pętla
print(algorytm_dodawania_pętla(int(input("Podaj numer ciągu liczbowego: "))))

Ale jak to ująć przy rozwiązywaniu od końca?
/Pewnie to banał ale jestem początkujący ;]

1

Jaki wynik, Opisz problem, co na wejsciu, co na wyjściu?

1
// given
a1, r

// when
a2 = a1 + r
a3 = a2 + r = (a1 + r) + r = a1 + 2r
a4 = a3 + r = a1 + 2r + r = a1 + 3r
a5 = a4 + r = a1 + 4r
etc.

// then
   an = a1 + (n - 1) * r

// example
4,7,10,13,16,19,22,25,28...
a1 = 4
r = 3
a5 = 4 + 4 * 3 = 4 + 12 = 16

a5 = 3 + a4
a4 = 3 + a3
a3 = 3 + a2
a2 = 3 + a1
a1

a5 = 3 + (3 + (3 + (3 + 4)))
1

Skoro chcesz rekurencyjnie:

funkcja(n)
jeżeli n=1 
zwróć 4
w przeciwnym razie
zwróć funkcja(n-1) + 3
1
def func(a0, r, n):
    if n > 1:
        return func(a0 + r, r, n-1)
    else:
        return a0

func(4, 3, 5)

1 użytkowników online, w tym zalogowanych: 0, gości: 1