4210 - FCrescRec: Difference between revisions
mNo edit summary |
No edit summary |
||
Line 9: | Line 9: | ||
FCrescRec(4) = 1, FCrescRec(975311) = 1, FCrescRec(43711) = 0, FCrescRec(24) = 0. | FCrescRec(4) = 1, FCrescRec(975311) = 1, FCrescRec(43711) = 0, FCrescRec(24) = 0. | ||
== | == Explicație == | ||
Această funcție verifică dacă cifrele unui număr sunt în ordine crescătoare. | |||
Dacă numărul este format dintr-o singură cifră, atunci returnează 1, deoarece o singură cifră este întotdeauna considerată ordonată crescător. | |||
Dacă ultima cifră a numărului este mai mare decât penultima cifră a numărului, funcția returnează 0, deoarece cifrele nu sunt în ordine crescătoare. | |||
În caz contrar, funcția este recursiv apelată pentru numărul obținut prin eliminarea ultimei cifre. | |||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
def validate_n(n): | |||
if isinstance(n, int) and n >= 0 and n <= 2147000000: | |||
return True | |||
else: | |||
return False | |||
def FCrescRec(n): | def FCrescRec(n): | ||
if n < 10: | if n < 10: | ||
Line 21: | Line 34: | ||
else: | else: | ||
return FCrescRec(n // 10) | return FCrescRec(n // 10) | ||
def main(): | |||
n = input("Introduceti un numar intreg pozitiv: ") | |||
try: | |||
n = int(n) | |||
if validate_n(n): | |||
result = FCrescRec(n) | |||
if result == 1: | |||
print(f"Cifrele numarului {n} sunt in ordine crescatoare.") | |||
else: | |||
print(f"Cifrele numarului {n} nu sunt in ordine crescatoare.") | |||
else: | |||
print("Numarul introdus nu este valid.") | |||
except ValueError: | |||
print("Nu ati introdus un numar intreg pozitiv.") | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 09:44, 6 April 2023
Cerința
Scrieți funcția recursivă FCrescRec care primind ca parametru un număr natural n, returnează 1 dacă cifrele sale, începând cu cifra unităţilor sunt dispuse în ordine crescătoare, sau returnează 0 dacă n nu are cifrele în ordine crescătoare.
Restricții și precizări
- 0 ≤ n ≤ 2.147.000.000
- Numele funcției este FCrescRec.
- Se recomandă utilizarea recursivității în rezolvarea problemei.
Exemplu:
FCrescRec(4) = 1, FCrescRec(975311) = 1, FCrescRec(43711) = 0, FCrescRec(24) = 0.
Explicație
Această funcție verifică dacă cifrele unui număr sunt în ordine crescătoare.
Dacă numărul este format dintr-o singură cifră, atunci returnează 1, deoarece o singură cifră este întotdeauna considerată ordonată crescător.
Dacă ultima cifră a numărului este mai mare decât penultima cifră a numărului, funcția returnează 0, deoarece cifrele nu sunt în ordine crescătoare.
În caz contrar, funcția este recursiv apelată pentru numărul obținut prin eliminarea ultimei cifre.
Rezolvare
<syntaxhighlight lang="python"> def validate_n(n):
if isinstance(n, int) and n >= 0 and n <= 2147000000: return True else: return False
def FCrescRec(n):
if n < 10: return 1 elif n % 10 > (n // 10) % 10: return 0 else: return FCrescRec(n // 10)
def main():
n = input("Introduceti un numar intreg pozitiv: ") try: n = int(n) if validate_n(n): result = FCrescRec(n) if result == 1: print(f"Cifrele numarului {n} sunt in ordine crescatoare.") else: print(f"Cifrele numarului {n} nu sunt in ordine crescatoare.") else: print("Numarul introdus nu este valid.") except ValueError: print("Nu ati introdus un numar intreg pozitiv.")
</syntaxhighlight>