URGENT! am nevoie cat mai repede, va rog
(recursivitate, c++)
Răspunsuri la întrebare
hai sa vedem ce face primul program:
daca x e nenul, atunci ne ducem la X-1, facem -- ce facem, si dupa afisam x-1
deci, pentru 3:
3>0, da!
- atunci, fac ce fac pt 2
- 2>0, da!
- atunci fac ce fac pt 1
- 1>0, da!
- atunci fac ce fac pt 0
- 0>0, nu!
- ma intorc
- acum ma intorc cand eram la 1.
- acum afisez 0
- acum ma intorc la 2
- afisez 2-1
- acum ma intorc la 3
- afisez 3-1
cam asta este un concept al recursivitatii:
desfacem problema in
Ceva ce pare greu de facut + ceva ce putem face pentru un caz mai mic
practic, desfacem mereu acel "greu de facut", in mai multe bucati mici, si dupa rezolvam fiecare bucata mai mica
un exemplu pentru ideologia asta mai bun ar fi a doua functie
sa vedem ce returneaza!
return S%10+functie(S/10)
ce se intampla?
iau ultima cifra a lui S, si o insumez cu ce se intampla acolo.
acum inca o ideologie fundamentala a recursivitatii! presupunand ca daca desfac in bucati mai mici, si rezolv ce aveam de rezolvat inainte merge, hai sa bag si bucata mica la care ma aflu acum in toata gramada de bucati, ca sa dau un rezultat bun!
deci, adun ultima cifra, dupa adun ultima cifra a numarului care nu mai are ultima cifra curenta, si tot asa.
practic pt un abc,va returna abc%10+ab%10+a%10=c+b+a
te las pe tine sa calculezi asta
a 3 a functie e FIX la fel.
daca n e divizor al lui m,
returnez 1+ce am acolo.
observ ca adun unu mereu cand n e divizor de-al lui m, dupa il scot pe n din m, si adun restul
Deeeeci, adun 1 mereu cand n e un divizor de-al lui m, practic, numar de cate ori apare n in m.
te las pe tine din nou sa calculezi asta.
daca ti-e greu, lasa un comentariu :)