剑指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)
    }
}

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

  • 学会通过递归找到幂指数运算之间的规律。
相关文章
|
2月前
|
存储 JSON JavaScript
「offer来了」保姆级巩固你的js知识体系(4.0w字)
该文章提供了JavaScript知识体系的全面复习资料,覆盖了从基础语法到高级特性如闭包、原型链、异步编程等多个方面,并通过大量的面试题和实例代码帮助巩固理解。
「offer来了」保姆级巩固你的js知识体系(4.0w字)
|
6月前
|
JavaScript 前端开发
JavaScript中科学计数法转化为数值字符串形式
JavaScript中科学计数法转化为数值字符串形式
|
6月前
|
JavaScript 前端开发
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
|
6月前
|
JavaScript 前端开发
JavaScript快速删除对象数组中某一个指定元素。注意:是对象数组,如果是数值数组,请慎用!会伤及无辜0、false、英文空格、undefined、null。
JavaScript快速删除对象数组中某一个指定元素。注意:是对象数组,如果是数值数组,请慎用!会伤及无辜0、false、英文空格、undefined、null。
|
6月前
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
42 0
|
12月前
|
存储 JavaScript 前端开发
【JS交互埋坑】事件函数自动将数字字符串String转为数值Number
【JS交互埋坑】事件函数自动将数字字符串String转为数值Number
79 0
|
存储 JavaScript 前端开发
【JS交互埋坑】事件函数自动将数字字符串String转为数值Number
【JS交互埋坑】事件函数自动将数字字符串String转为数值Number
116 0
|
存储 JavaScript 前端开发
大幅提升前端工作效率!Numeral.js数值格式化库来了!
Numeral.js 是一个用来对数值进行操作和格式化的 JS 库。可将数字格式化为货币、百分比、时间,甚至是序数词的缩写(比如1st,100th)。 最好用的数值格式化工具
339 0
大幅提升前端工作效率!Numeral.js数值格式化库来了!
|
JavaScript 前端开发
javascript整数千分位格式化函数
javascript整数千分位格式化函数
80 0
|
JavaScript 前端开发 安全
在 JavaScript 中将浮点数转换为整数
在 JavaScript 中将浮点数转换为整数
228 0