剑指Offer第11题---数值的整数次方
Peng's Blog 只记录和技术相关的东西

剑指Offer第11题---数值的整数次方


题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

正确思路(自己的话描述)

这是一道送分题,一定不能做错。但要体现出自己思维的不一样。
你想想,一个数的n次方,那岂不是要乘以n次??? 但是这么做的话,岂不是考官太蠢??? 所以肯定是没那么简单的。
想想其它方法吧。
a的n次方 = a的n/2次方 * a的n/2次方
递归计算。
同时还需要考虑n为奇数、偶数时候的情况。正数幂和负数幂的情况。

参考代码

public class Question11{
	 public double Power(double a, int exponent) {
        int n = Math.abs(exponent);
        double result = 0;
		if(n==0)
			return 1;
		if(n==1)
			return a;
		result = Power(a,n>>1);
		result *= result;
		if((n&1)==1)   //等于奇数的话需要再乘一次
			result = result * a;
		if(exponent<0)
			result = 1/result;
		return result;
   }
}

enter description here


Comments

评论功能暂停使用,如需跟作者讨论请联系底部的GitHub