 # LeetCode #50 Pow(x, n) Solution & Explanation

Content

## LeetCode Problem

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

## Solution

In our first try, we multiply by iteration ➡ multiply n times

### C# Solution

First tryTime Limit Exceeded Error

``````public class Solution {
public double MyPow(double x, int n) {
if(x == 0)
{
return 0.0;
}
else if (n == 0)
{
return 1.0;
}

double res = 1;
bool neg = n < 0;
if(neg)
{
n*=-1;
}

for(int i = 0;i<n;i++)
{
res*=x;
}

//if x is a negative number
if(neg)
{
res = 1/res;
}

return res;
}
}``````

Solution1

In this solution, as example 28 can write as 2*2*2*2*2*2*2*2

Also can write as 22 * 22 * 22 * 22 or 42 * 42

So if we can get 42 ,we can simplify the multiplication times.

``````public class Solution {
public double MyPow(double x, int n) {
if(x == 0)
{
return 0.0;
}

double res = cal(x, n);
return n>0 ? res : 1/res;
}

private double cal(double x, int n)
{
//Console.WriteLine("x:"+x+",n="+n);     //*1
if (n == 0)
{
return 1.0;
}

double res = cal(x*x,n/2);
return n%2 == 0 ? res : res*x;
}
}``````

you can see the log with the code at *1

### Java Solution

Solution1

``````class Solution {
public double myPow(double x, int n) {
if(x == 0)
{
return 0.0;
}

double res = cal(x, n);
return n>0 ? res : 1/res;
}

private double cal(double x, int n)
{
if (n == 0)
{
return 1.0;
}

double res = cal(x*x,n/2);
return n%2 == 0 ? res : res*x;
}
}``````

### Python3 Solution

Solution1

``````def cal(x: float, n: int) -> float:
if n == 0:
return 1.0

res = cal(x*x,(int)(n/2))
return res if n%2 == 0 else res*x

class Solution:
def myPow(self, x: float, n: int) -> float:
if x == 0:
return 0
res = cal(x, n)
return res if n>0 else 1/res
``````

### JavaScript Solution

Solution1

``````/**
* @param {number} x
* @param {number} n
* @return {number}
*/
var myPow = function(x, n) {
if(x == 0)
{
return 0.0;
}

res = cal(x, n);
return n>0 ? res : 1/res;
};

function  cal(x, n)
{
if (n == 0)
{
return 1.0;
}

res = cal(x*x,parseInt(n/2));
return n%2 == 0 ? res : res*x;
}``````

## Conclusion

🧡If my solution helps, that is my honor!

🧡You can support me by clicking some ad, Thanks a lot

If you got any problem about the explanation or you need other programming language solution, please feel free to let me know (either leave a comment or contact me by Messenger is ok!)

Cover Photo : Photo by Kamran Chaudhry on Unsplash

The problem link : Pow(x, n) – LeetCode

Latest Post