diff --git a/notes/剑指 offer 题解.md b/notes/剑指 offer 题解.md index 726a164e..b4b6262f 100644 --- a/notes/剑指 offer 题解.md +++ b/notes/剑指 offer 题解.md @@ -605,6 +605,19 @@ public int NumberOf1(int n) { ## 16. 数值的整数次方 +**题目描述** + +给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent。求 base 的 exponent 次方。 + +**解题思路** + +下面的讨论中 x 代表 base,N 代表 exponent。 + +- 当 x 为偶数时,xN = (x \* x)N / 2; +- 当 x 为奇数时,xN = x \* (x \* x)N / 2; + +因为 (x \* x)e / 2 可以通过递归求解,并且每递归一次,N 都减小一半,因此整个算法的时间复杂度为 logN。 + ```java public double Power(double base, int exponent) { if (exponent == 0) return 1;