Let me trace power(, ):
Call : power(, ) is even, so compute power(, ) and square it Call : power(, ) is odd, so return power(, )
Call : power(, ) is even, so compute power(, ) and square it Call : power(, ) is even, so compute power(, ) and square it Call : power(, ) is odd, so return power(, )
Call : power(, ) hits base case, returns
Then the results come back: , , , , . Only calls instead of multiplications.