Both methods above work, but for large numbers, an optimized approach is Exponentiation by Squaring (used in competitive programming & cryptography).
public static int power(int base, int exponent) {
if (exponent == 0) return 1;
int halfPower = power(base, exponent / 2);
if (exponent % 2 == 0) {
return halfPower * halfPower;
} else {
return base * halfPower * halfPower;
}
}
- O(log n) complexity (much faster than O(n))
- Best for large exponent values