[Algorithm] Write your own Math.pow function in Javascript, using Recursive approach

/**@abstract
 * Write your own Math.pow(a int, b int) function
 *  */

function pow (a, b) {

  let result = 0;
  let nigate = b < 0;
  b = nigate ? b*(-1) : b;
  if (b === 0) {
    result = 1;
  }

  let isEven = b % 2 === 0;

  if (b === 1) {
    result = a;
  }

  if (b >= 2) {
    result = isEven ? pow(a, b / 2) * pow(a, b / 2)  : a * pow(a, b-1);
  }

  return nigate ? 1 / result : result;
}

console.log(pow(0, 0) === Math.pow(0,0)); 
console.log(pow(0, -2) === Math.pow(0, -2));
console.log(pow(0, 1) === Math.pow(0, 1));
console.log(pow(0, 2) === Math.pow(0, 2));
console.log(pow(0, 3) === Math.pow(0, 3));
console.log(pow(-4, 3) === Math.pow(-4, 3));
console.log(pow(-4, -3) === Math.pow(-4, -3));
console.log(pow(4, 3) === Math.pow(4,3));
console.log(pow(4, -3) === Math.pow(4, -3));
console.log(pow(4, 2) === Math.pow(4,2));
console.log(pow(4, -2) === Math.pow(4, -2));
console.log(pow(-4, 1) === Math.pow(-4, 1));
console.log(pow(4, 1) === Math.pow(4, 1));
原文地址:https://www.cnblogs.com/Answer1215/p/10497694.html