剑指Offer——数值的整数次方(JS实现)

简介: 剑指Offer——数值的整数次方(JS实现)

题目描述

image.png

解题思路

  • 本题核心: 当n为奇数和偶数时两种情况的讨论,同时要注意n为0、负数时的情况。
  • 情况1: (2,4) = (2,2) * (2,2)
  • 情况2:(2,5) = (2,2) * (2,2) * 2
  • 具体详尽思路请看注释

解题代码

var myPow = function(x, n) {
    // !本题核心: 当n为奇数和偶数时两种情况的讨论
    // 情况1: (2,4) = (2,2) * (2,2)
    // 情况2:(2,5) = (2,2) * (2,2) * 2
    // 首先n是有可能为0,正,负数的
    if (n === 0) return 1;
    // 无论正负数我们都先将其转换为正数计算
    const res = dfs(x,Math.abs(n));
    if (n > 0) {
        return res;
    } else {
        return 1/res;
    }
    function dfs(x,n) {
        // 递归的结束条件
        if (n === 1) {
            return x;
        }
        let temp = dfs(x,Math.floor(n/2));
        return n % 2 ? (x * temp * temp) : (temp * temp)
    }
}

总结(本题给我们的启示思路)

  • 学会通过递归找到幂指数运算之间的规律。
相关文章
|
4月前
|
JavaScript 前端开发
JavaScript快速删除对象数组中某一个指定元素。注意:是对象数组,如果是数值数组,请慎用!会伤及无辜0、false、英文空格、undefined、null。
JavaScript快速删除对象数组中某一个指定元素。注意:是对象数组,如果是数值数组,请慎用!会伤及无辜0、false、英文空格、undefined、null。
|
4月前
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
23 0
|
5月前
|
存储 JavaScript 前端开发
【JS交互埋坑】事件函数自动将数字字符串String转为数值Number
【JS交互埋坑】事件函数自动将数字字符串String转为数值Number
36 0
|
5月前
|
存储 JavaScript 前端开发
【JS交互埋坑】事件函数自动将数字字符串String转为数值Number
【JS交互埋坑】事件函数自动将数字字符串String转为数值Number
86 0
|
9月前
|
JavaScript 前端开发
javascript整数千分位格式化函数
javascript整数千分位格式化函数
52 0
|
9月前
|
JavaScript 前端开发 安全
在 JavaScript 中将浮点数转换为整数
在 JavaScript 中将浮点数转换为整数
132 0
|
10月前
|
前端开发 JavaScript
前端祖传三件套JavaScript的ES6+之各种扩展:字符串、数值、函数、数组、对象、正则.
在前端开发中,ES6+ 为 JavaScript 带来了各种扩展功能,包括字符串、数值、函数、数组、对象、正则等方面的增强。本文将介绍 JavaScript 中各种扩展的基本概念和使用方法。
104 0
|
11月前
|
JavaScript
js 将数值金额转换成大写金额
js 将数值金额转换成大写金额
43 0
|
JavaScript 前端开发 测试技术
【Javascript - 力扣每日一题】13. 罗马数字转整数
【Javascript - 力扣每日一题】13. 罗马数字转整数
85 0
|
存储 JavaScript 算法
JS算法探险之整数
整数除法 二进制加法 前 n 个数字二进制中 1 的个数 只出现一次的数字
106 0