基于Spark的音乐数据分析可视化系统(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

核心内容摘要

Nodejs+vue智能管理的企业员工打卡签到办公系统app小程序
ESP32-CAM无线刷入ESPHome全攻略:从硬件连接到HomeAssistant集成

虚拟手柄驱动技术突破:如何解决游戏控制设备兼容性难题——开发者与玩家的终极解决方案

题目链接pow(x,n)

题目解析题目很简单要求x的n次幂。

要注意n的取值范围n可能是负数这时候我们要利用数学中x⁻ⁿ 1 / xⁿ来转换n可能是 -2³¹若转换成正数则会超过 int 类型的最大取值 2³¹-1。

算法原理

1 解法一循环思路很简单循环n次即可。

for (int i 0; i n; i ) x * x;时间复杂度ON但是当n取值很大时比如 n 1000程序的效率就会降低甚至超时。

2 解法二快速幂快速幂可以采用两种方法来实现递归实现✅循环实现我们这里采用递归实现。

先看示例1要求 2¹⁰我们可以通过 2⁵ * 2⁵ 来得到要求 2⁵我们可以通过 2² * 2² * 2 来得到要求 2²我们可以通过 2 * 2 来得到要求 2我们可以通过 2⁰ (

* 2 来得到即

代码实现设计函数头——寻找子问题根据算法原理我们可以知道该问题的子问题是计算所给的x的n次幂因此函数头有两个参数x、n返回值为与所给的x相同的类型double pow(double x, int n)设计函数体——子问题所做的事每一个子问题都是先得到x的n / 2次幂然后根据当前n的奇偶性决定是 xⁿ * xⁿ还是 xⁿ * xⁿ * x即temp pow(x, n /

return (n % 2

? temp * temp temp * temp * temp递归出口当 n 0 时返回1因为所有数的0次幂都是1代码实现如下class Solution { public double myPow(double x, int n) { // 分n为正负两个情况 return (n

?

0 / pow(x, -n) : pow(x, n); } public double pow(double x, int n) { // 递归出口 if (n

return

0; double temp pow(x, n /

; // 分奇偶情况 return (n % 2

? temp * temp : temp * temp * x; } }

9.1孕妇大片-9.1孕妇大片应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123