LeetCode 50. Pow(x, n)

xiaoxiao2021-02-27  237

50. Pow(x, n)

Implement pow(x, n).

题目意思: 题目意思很简单,让我们实现一个幂函数,也就是给出 x n,返回 xn .

解题思路: 幂函数是什么我们都很清楚, xn 表示n个x相乘的结果,最简单粗暴的方法就是写一个循环来将n个x乘起来,但这是低效的,而且这种方法在Leetcode上提交也不会通过。但是,对于n个x,如果我们把这些x分成两部分。

xxxpart1:n2xxxxpart2:n2x 从上面的式子可以看出,实际上,我们只需要计算一次第一部分的n个x的乘积,后半部分就不用算了,也就是 xn=(xn2)2 按照这中方法,我们可以递归地一直把这些x划分成2部分,每一部分又划分成2部分……直到只剩下1个或0个x,这样就可以开始返回。

代码:

class Solution { public: double myPow(double x, int n) { if (n < 0) { x = 1 / x; n = -n; } if (n == 0) return 1; else if (n == 1) return x; double half = myPow(x, n / 2); double result; if (n % 2 == 0) result = half * half; else result = half * half * x; // 判断result是否inf,如果是就返回0,否则返回result的值 return result + 1 == result - 1 ? 0 : result; } };
转载请注明原文地址: https://www.6miu.com/read-8750.html

最新回复(0)