개발/Leetcode

Leetcode 50. Pow(x, n)

지산동고라니 2023. 7. 24. 12:36

https://leetcode.com/problems/powx-n/description/

 

Pow(x, n) - LeetCode

Can you solve this real interview question? Pow(x, n) - Implement pow(x, n) [http://www.cplusplus.com/reference/valarray/pow/], which calculates x raised to the power n (i.e., xn).   Example 1: Input: x = 2.00000, n = 10 Output: 1024.00000 Example 2: Inpu

leetcode.com

문제

pow(x,n) x의  n승을 계산하는 함수를 구현하여라

 

코드

class Solution:
    def myPow(self, x: float, n: int) -> float:
        ans = self.h(x, abs(n))
        return float(ans) if n >= 0 else 1 / ans

    def h(self, base, n):
        if n == 0:
            return 1

        if n % 2 == 0:
            return self.h(base * base, n / 2)
        else:
            return base * self.h(base * base, (n-1) / 2)
public class Solution
{
    public double MyPow(double x, int n)
    {
        long N = Math.Abs(n);
        bool isNeedReverse = n < 0;

        return isNeedReverse ? 1 / rec(x, N) : rec(x, N);
    }

    public double rec(double b, long n)
    {
        if (n == 0)
        {
            return 1;
        }
        double bb = rec(b, n / 1);
        return n % 2 == 0 ? bb * bb : b * bb * bb;
    }
}