Scrieți o funcție recursivă și nerecursivă,
care are un argument pozitiv întreg
și returnează rădăcina digitală a acestui număr. digital
rădăcina numărului este calculată după cum urmează.
Sunt adăugate toate numerele unui număr, apoi toate cifrele
suma găsită etc. Procesul se repetă până când,
Rezultatul nu este un număr dintr-o singură cifră
(cifră), care este rădăcina digitală.
Începem cu o variantă non-recursivă.
Întregul cod sursă este:
în funcția principală, totul este destul de simplu: setați localizarea rusească (set_local (LC_ALL, "rusă");), atunci utilizatorul este invitat să introducă un număr și acest număr este citit în variabila n de tip întreg. După aceea, este imprimată ieșirea funcției int RootOfNumber (int k).
Să o analizăm în detaliu.
Un număr întreg este trecut în el și atâta timp cât conține mai mult de un caracter (condiția k> 9), se efectuează un apel pentru a adăuga numerele într-un număr. Se numește cu argumente diferite. Îl am k. La fiecare întoarcere a ciclului, acest număr scade și, mai devreme sau mai târziu, devine mai mic de 10. Atunci funcția va reveni la o valoare.
Și ultima funcție, care calculează pur și simplu suma cifrelor din interiorul numărului:
Acceptă întreg N. Atâta timp cât N este zero împarte acel număr de 10 (radix), și adaugă restul împărțirii sumei, apoi se împarte N la 10 din nou, dar de data aceasta nu a înregistrat deja restul împărțirii, ci întreaga parte. Deoarece are loc rotunjirea, mai devreme sau mai târziu, acest număr va fi zero.
O versiune recursivă a aceleiași funcții:
O caracteristică a funcțiilor recursive este că se numește în sine. În acest cod nu există nicio funcție suplimentară care ar conta suma, dar codul este conținut în interior. Adică mai întâi la funcția de servit un număr pentru care este bine să se calculeze rădăcină, atunci pentru acest număr este considerat a fi suma numerelor și a verificat starea de ieșire recursivitate - dacă un număr este lipsit de ambiguitate, adică mai puțin de 10. Dacă da, atunci ieși din recurență returnează numărul, în caz contrar - sunăm încă o dată aceeași funcție, dar cu o sumă nouă.
Articolul precedent Traducere: Dezvoltarea primei aplicații Metrostyle utilizând C ++, C # sau Visual Basic.Net
Următorul articol C ++: Cifrul lui Caesar