c++
Tomekkk: Mam pytanie dotyczące c++ programu wykonującego rekurencyjne podnoszenie do potęgi .
Oto program
#include<iostream>
using namespace std ;
int Potega(int a, int n){ // deklaracja funkcji w c++
if( n == 1 ) return a;
if( n % 2 == 0 ){
int p = Potega(a, n/2);
return p * p;
}
else {
int p = Potega(a,(n−1)/2);
return p*p*a;
}
}
int main(){
int a,p;
cout <<"Podaj liczbe: ";
cin >> a ;
cout<<"Podaj potege:";
cin>>p;
cout<<"Twoj wynik wynosi : "<<Potega(a,p);
return 0;
}
I moje pytanie brzmi tak : co jest w tym przypadku złożonością optymistyczną i pesymistyczną ?
31 maj 20:05
wmboczek: algorytm rekurencji wykona się log2n razy
zakładając istotność tylko mnożenia
optymistycznie wykonamy 1 mnożenie p*p w kroku
pesymistycznie wykonamy 2 mnożenia p*p*a
31 maj 20:27