← Back to topics
Topic

Rekurzivna funkcija za brzo stepenovanje

V
Vidakovic
Moze li mi ko napisati rekurzivnu funkciju za brzo stepenovanje u C++
b
boris4

// ova funkcija izracunava a ^ b
// a ^ b =
// ( a ^ ( b / 2 ) ) ^ 2 za b = 2 * k
// ( a ^ ( b - 1 ) ) * a za b = 2 * k + 1

int stepen( int a, int b )
{
if ( b == 0 )
return 1;

if ( b % 2 == 0 )
{
int tmp = stepen( a, b / 2 );
return tmp * tmp;
}

return stepen( a, b - 1 ) * a;
}


nisam testirao ali mislim da je dobro... :)
A
Al3kSaNdaR
Kod je dobar ali moze i brze :)


int stepen( int a, int b )
{
if ( b == 0 )
return 1;

int tmp = stepen( a, b / 2 );
tmp *= tmp;

if ( b % 2 == 0 )
{
return tmp;
}

return tmp * a;
}
g
gates
tvoj nije nista posebno brzi od njegovog samo ce imati nekoliko poziva funkcije manje, a slozenost je ista