Reputation:
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
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
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