4210 - FCrescRec
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>