4210 - FCrescRec

From Bitnami MediaWiki
Revision as of 09:44, 6 April 2023 by Cata (talk | contribs)

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>