user12130378
user12130378

Reputation:

how to get power of any number using javascript in recursion logic?

I am trying to make power function using recursion .my function is working fine and giving correct output .

but this function is not optimized I am calling this function getPower(num, power / 2) two times .can we optimized this function

function getPower(num, power) {
  if (power === 1) return num;
  if (power % 2 === 0) {
    return getPower(num, power / 2) * getPower(num, power / 2);
  } else {
    return (
      num * getPower(num, (power - 1) / 2) * getPower(num, (power - 1) / 2)
    );
  }
}

console.log(getPower(2, 5));

can we store getPower(num, power / 2) this value anywhere ? so that I will not call again

Upvotes: 1

Views: 83

Answers (2)

Nina Scholz
Nina Scholz

Reputation: 386680

You could take a temporary variable for the half value.

function getPower(num, power) {
    var half;
    if (power === 1) return num;
    if (power % 2 === 0) {
        half = getPower(num, power / 2);
        return half * half;
    }
    half = getPower(num, (power - 1) / 2)
    return num * half * half;
}

console.log(getPower(2, 5));

Upvotes: 3

sundaycode
sundaycode

Reputation: 468

You could do something like this where you would decrement the power:

function getPower(num, power) {
    if(power === 1) {
        return num
    } else {
        return num * getPower(num, power - 1)
    }
}

console.log(getPower(2, 3)) // 8

Upvotes: 1

Related Questions