Pow(x, n) (LC-0050)

class Solution:
    def myPow(self, x, n) -> float:
        @lru_cache(maxsize=None)
        def rec(x, n):
            if n == 0:
                return 1
            elif n == 1:
                return x
            ans = rec(x, n // 2)
            return ans * ans if (n % 2) == 0 else x * ans * ans
        
        return rec(x, n) if n >= 0 else 1 / rec(x, -n)