Scrieti o functie care:
- va avea 2 parametri
- – 1 parametru -> un numar care trebuie ridicat la o putere
- – 2 – lea parametru -> un numar care reprezinta puterea la care trebuie ridicat primul parametru.
- va returna -> primul parametru ridicat la puterea al doilea parametru
Nu conteaza limbajul in care se scrie functia, pricipalul sa fie cat mai rapida metoda.
PS. Se accepta orice tip de date care doriti sa il folositi (inclusiv int).

python:
def putere(a,b):
____return a**b
http://img710.imageshack.us/img710/8125/screenshotbi.png
double putere(int x, int n){
if (n == 0)
return 1;
else
return x*putere(x, n-1);
}
destul de interesanta varianta recursiva.
eu am vrut sa propun o varianta care foloseste operatori binari, dar mi-am dat seama ca nu prea functioneaza
.
nu e buna recursia… la numere mari o sa moara…
e mai optim cu mult sa scrii fara… adica se primeste oleaca mai mult de scris dar mai optim
Laso bre mai moale ! Inainte sa zici ceva ghindestete
Cum poate sa moara chind is numere mai mari ?
Am scris si o bucata de cod special pentru tine , verifica si ai sa vezi daca algoritmul tau iterativ merge mai rapid.
#include
long long pow(int a,int b){
if(b==1) return a;
else{
long long x=pow(a,b/2);
if(b%2) return x*x*a;
else return x*x;
}
}
int main(){
int a,b;
printf("INTRODU NUMARUL SI PUTEREA:\n");
scanf("%d %d",&a,&b);
printf("REZULTAT:%lld\n",pow(a,b));
}
Executal si vezi chiti pasi face ? 6 maximu si nu b(puterea la care e ridicat numarul) cum 100% este algoritmul tau iterativ …
CONCLUZIE : Nu te impaci cu notiunea de recursie si incerci so ocolesti … desigur ca sunt algoritmi care nici nu are sens sa ii faci recursiv pentru ca intradevar consuma mult timp ex: FIBONACI! asta nu inseamna ca in toate cazurile varianta iterativa e mai buna!!!