Rekurencja dla licznb x + 3

Rekurencja dla licznb x + 3
D3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 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:

Kopiuj
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 ;]

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
1

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

BraVolt
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 2918
1
Kopiuj
// 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)))
SE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 318
1

Skoro chcesz rekurencyjnie:

Kopiuj
funkcja(n)
jeżeli n=1 
zwróć 4
w przeciwnym razie
zwróć funkcja(n-1) + 3
dedicated
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 161
1
Kopiuj
def func(a0, r, n):
    if n > 1:
        return func(a0 + r, r, n-1)
    else:
        return a0

func(4, 3, 5)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.