Four mistakes that trip up beginners:
Missing base case. Your function calls itself forever until stack overflow.
Base case never reached. Each call must move toward the base case. If power(, ) called power(, +), you'd recurse forever.
Wrong return value. Forgetting to return the recursive result loses the answer.
Modifying shared state. If your function changes a global variable, recursive calls can interfere with each other. When your recursive code crashes or gives wrong answers, check these four things first.