Sunteți pe pagina 1din 2

Algoritm de calcul al numărului și sumei cifrelor unui număr

- iterativ și recursiv –
Autor: Matei Alexandru-Petruț

Grupa: 313AC
Algoritmii de aflare a numărului și a sumei cifrelor unui număr , atât iterativi cât și recursivi, se
implementează foarte simplu. Pentru prelucrarea cifrelor unui număr n se extrag pe rând cifrele
acestuia. Întotdeauna cifra extrasă va fi cifra cea mai nesemnificativă (ultima cifră), cu operaţia
n%10. După extragerea ultimei cifre, aceasta se prelucrează, apoi, această cifră, se elimină din
numărul iniţial. Algoritmul continuă până când numărul mai are cifre (n!=0). În cazul calculării
numărului de cifre al numărului se mai adaugă algoritmului precedent etapa contorizării ( cât
timp numărul nu este 0, se adaugă 1 la o variabilă inițial egală cu 0).În cazul calculării sumei
cifrelor, se adaugă pe rând ultima cifră la o variabilă inițial egală cu 0. Iterativ, se folosește
instrucțiunea repetitivă while, în schimb, din punct de vedere recursiv, se folosește autoapelarea
funcției de calcul al numărului de cifre, respectiv al sumei cifrelor numărului.

Exemplu:

Fie numarul 123456789.

-numarul cifrelor nr. –suma cifrelor nr.

nr 0 s 0

123456789 123456789

nr  0+1=1 s 0+9=9

123456789 / 10 = 12345678 123456789 / 10 = 12345678

nr  1+1=2 s 9+8=17

12345678 / 10 = 1234567 12345678 / 10 = 1234567

nr  2+1=3 s 17+7=24

1234567 / 10 = 123456 1234567 / 10 = 123456

nr  3+1=4 s 24+6=30

123456 / 10 = 12345 123456 / 10 = 12345

nr  4+1=5 s 30+5=35
12345 / 10 = 1234 12345 / 10 = 1234

nr  5+1=6 s 35+4=39

1234 / 10 = 123 1234 / 10 = 123

nr  6+1=7 s 39+3=42

123 / 10 = 12 123 / 10 = 12

nr  7+1=8 s 42+2=44

12 / 10 = 1 12 / 10 = 1

nr  8+1=9 s 44+1=45

1 / 10 = 0 => nr=9 1 / 10 = 0 => s=45

Concluzii:

-Algoritmul iterativ prezintă mai puțină complexitate decât algoritmul recursiv

-Algoritmul recursiv este mai greu de implementat comparativ cu algoritmul iterativ

-Algoritmul iterativ ocupă mai mult spațiu din memorie decât algoritmul recursiv

-Algoritmul iterativ este mai eficient din punct de vedere temporal (timp de execuție) decât
algoritmul recursiv, care conduce la o creștere a vitezei de programare

S-ar putea să vă placă și