Help...

I got this code segment from Data Structure Book (Recursive Chapter).

I need some one to describe to me the Flow of the function specially ( return half*half ) part.Where is the value of the return

Thanks a lot.Code:`#include <iostream.h>`

int power(int X,int N)

{

if(N == 0)

return 1;

else

{

int half = power(X,N/2);

if(N%2 == 0)//even

return half * half ;

else //odd

return X * half * half ;

}

}

int main()

{

int p = power(3,4);

return 0;

}