4208 - ExistaImpareRec: Difference between revisions
Pagină nouă: == Cerința == Scrieți funcția recursivă <span style="color: red;">ExistaImpareRec</span> care primind ca parametru un număr natural <span style="color: red;">n</span>, returnează <span style="color: red;">1</span> dacă <span style="color: red;">n</span> conține cel puțin o cifră impară, sau returnează <span style="color: red;">0</span> dacă <span style="color: red;">n</span> conține doar cifre pare. == Restricții și precizări == * <span style="color: red;">0... |
No edit summary |
||
Line 2: | Line 2: | ||
Scrieți funcția recursivă <span style="color: red;">ExistaImpareRec</span> care primind ca parametru un număr natural <span style="color: red;">n</span>, returnează <span style="color: red;">1</span> dacă <span style="color: red;">n</span> conține cel puțin o cifră impară, sau returnează <span style="color: red;">0</span> dacă <span style="color: red;">n</span> conține doar cifre pare. | Scrieți funcția recursivă <span style="color: red;">ExistaImpareRec</span> care primind ca parametru un număr natural <span style="color: red;">n</span>, returnează <span style="color: red;">1</span> dacă <span style="color: red;">n</span> conține cel puțin o cifră impară, sau returnează <span style="color: red;">0</span> dacă <span style="color: red;">n</span> conține doar cifre pare. | ||
== Restricții și precizări == | == Restricții și precizări == | ||
* <span style="color: red;">0 ≤ n ≤ | * <span style="color: red;">0 ≤ n ≤ 2<sup>31</sup> - 1</span> | ||
* Numele funcției este <span style="color: red;">ExistaImpareRec</span>. | * Numele funcției este <span style="color: red;">ExistaImpareRec</span>. | ||
* Se recomandă utilizarea recursivității în rezolvarea problemei. | * Se recomandă utilizarea recursivității în rezolvarea problemei. | ||
== Exemplu == | == Exemplu == | ||
<span style="color: red;">ExistaImpareRec(240) = 0</span> și <span style="color: red;">ExistaImpareRec(2134) = 1</span>. | <span style="color: red;">ExistaImpareRec(240) = 0</span> și <span style="color: red;">ExistaImpareRec(2134) = 1</span>. | ||
== | == 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 == | == Rezolvare == | ||
=== Varianta 1 === | === Varianta 1 === | ||
<syntaxhighlight lang="python"> | <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): | def ExistaImpareRec(n): | ||
if n == 0: | if n == 0: | ||
Line 19: | Line 29: | ||
else: | else: | ||
return ExistaImpareRec(n // 10) | 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> | </syntaxhighlight> |
Revision as of 12:00, 5 April 2023
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>