포스트

Pow(x, n)

LeetCode 50. Pow(x, n)

원문

Implement pow(x, n), which calculates x raised to the power n(i.e., xn).

풀이

지수가 0이면 1, 1이면 밑, -1이면 밑의 역수를 반환한다.
그 외의 경우, 지수가 짝수일 때와 홀수일 때로 나누어 함수를 재귀호출한다.

코드

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution:
    def myPow(self, x: float, n: int) -> float:
        @cache
        def calc(a, p):
            if p == 0: return 1
            if p == 1: return a
            if p == -1: return 1/a

            if p % 2:
                return a * calc(a, p // 2) * calc(a, p // 2)
            return calc(a, p // 2) * calc(a, p // 2)


        return calc(x, n)

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
    public double myPow(double x, long n) {
        if (n == 0) {
            return 1;
        }
        if (n < 0) {
            return myPow(1/x, Math.abs(n));
        }

        if (n % 2 == 1) {
            return x * myPow(x * x, n / 2);
        }
        return myPow(x * x, n / 2);
    }
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.