一、题目
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
二、思路
1、传统方法计算,时间复杂度O(n)
2、递归方式计算,时间复杂度O(logn)
当exponent为偶数时,例如求base^10,则result= base^5 * base^5;
当exponent为奇数数时,例如求base^11,则result= base^5 * base^5 * base;
接着采用递归的方法,计算base^5 即可。
三、代码
1、传统方法
public class Solution { public double Power(double base, int exponent) { double result=1; for(int i=0;i<Math.abs(exponent);i++){ result *=base; } if(exponent<0){ result=1/result; } return result; } }
2、递归的方法
public class Solution { public double Power(double base, int exponent) { double result=0.0; int n=Math.abs(exponent); if(n==0) return 1; if(exponent==1) return base; if(exponent==-1) return 1/base; result =Power(base,n>>1)*Power(base,n>>1); if((n&1)==1) result*=base; if(exponent<0) result=1/result; return result; } }
-------------------------------------------------------------------------------------------------
参考链接:https://www.nowcoder.com/questionTerminal/1a834e5e3e1a4b7ba251417554e07c00
时间: 2024-10-28 08:33:36