0926 - FSumDiv3Rec
Cerinţa
Scrieţi definiția completă a subprogramului recursiv sum3
, care primeşte prin parametrul v
un tablou unidimensional cu cel mult 100 de elemente întregi, iar prin parametrul n
numărul efectiv de elemente din v
.
Subprogramul returnează suma elementelor din tabloul v
care sunt divizibile cu 3.
Date de intrare
Se va introduce de la tastatură un număr natural care va fi transmis ca perimetru
Date de ieșire
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse." În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse.".
Restricţii şi precizări
0 < n ≤ 100 numele subprogramului cerut este sum3 parametrii sunt, în această ordine: v, n indicii elementelor vectorului v sunt 0, 1 ,… , n-1. Se recomandă realizarea unui subprogram recursiv.
Exemplu
Dacă n=6, x= (12, 7, 6, 3, 8, 5), rezultatul va fi 21.
Rezolvare
def sum3(v, n): if n == 0: # cazul de baza 1: n este 0 return 0 elif n == 1: # cazul de baza 2: n este 1 if v[0] % 3 == 0: return v[0] else: return 0 else: # cazul general mijloc = n // 2 suma_stanga = sum3(v, mijloc) suma_dreapta = sum3(v[mijloc:], n - mijloc) return suma_stanga + suma_dreapta n = int(input()) if n > 0 and n <= 100: # verificam daca n se afla in intervalul permis v = list(map(int, input().split())) suma = sum3(v, n) print("Suma elementelor divizibile cu 3 este:", suma) else: # daca n nu se afla in intervalul permis, afisam un mesaj de eroare print("Datele de intrare nu corespund restrictiilor impuse.")