以下情况都以 base^exponent 底数(double 类型)base 指数(int类型)exponent为例,且不考虑数据溢出的情况。
一、普通方法:
1、思路:for循环直接求,注意几种特殊情况的讨论(exponent=0; exponent<0&&base=0;)
二:分治法
1、思路:如图
2、代码:
double getNum(double base,int n){
double sum;
if(n==0)
return 1;
if(n%2==0)
{
double temp=getNum(base,n/2);//用temp记录中间值,使中间值不用计算两遍
sum=temp*temp;
}
else if(n%2==1)
{
dou