4208 - ExistaImpareRec
Cerința
Scrieți funcția recursivă ExistaImpareRec care primind ca parametru un număr natural n, returnează 1 dacă n conține cel puțin o cifră impară, sau returnează 0 dacă n conține doar cifre pare.
Restricții și precizări
- 0 ≤ n ≤ 231 - 1
- Numele funcției este ExistaImpareRec.
- Se recomandă utilizarea recursivității în rezolvarea problemei.
Exemplu
ExistaImpareRec(240) = 0 și ExistaImpareRec(2134) = 1.
Explicație
Aceasta este o funcție recursivă numită ExistaImpareRec, care ia un argument n și returnează 1 dacă cel puțin una dintre cifrele numărului n este impară, și 0 în caz contrar.
Pentru cazul de bază, dacă n este 0, funcția returnează 0. Dacă n este impar, funcția returnează 1. În caz contrar, funcția returnează ExistaImpareRec(n // 10), adică apelul recursiv al funcției cu n împărțit la 10.
Rezolvare
Varianta 1
<syntaxhighlight lang="python"> def validate_n(n):
if isinstance(n, int) and n >= 0 and n <= 2**31 - 1:
return True
else:
return False
def ExistaImpareRec(n):
if n == 0:
return 0
elif n % 2 == 1:
return 1
else:
return ExistaImpareRec(n // 10)
def main():
n = input("Introduceti un numar intreg intre 0 si 2^31 - 1: ")
try:
n = int(n)
if validate_n(n):
result = ExistaImpareRec(n)
if result == 1:
print(f"Exista cel putin o cifra impara in numarul {n}.")
else:
print(f"Toate cifrele numarului {n} sunt pare.")
else:
print("Numarul introdus nu este valid.")
except ValueError:
print("Nu ati introdus un numar intreg.")
</syntaxhighlight>