文章目录
快速求幂算法inJava
一、累乘
最傻的办法也是最容易理解的,
时间复杂度 O(n)
public static double power(double base,int exponent){
double d =1;
while(exponent > 0){
d *= base;
exponent--;
}
return d;
}
我们根据这个算法,推演 15^9 的运算过程
变量名 | 初始 | 循环 1次 | 循环 2次 | 循环 3次 | ··· ··· | 循环 9次 |
---|---|---|---|---|---|---|
d | 1 | 15 | 15^2 | 15^3 | ··· ··· | 15^9 |
base | 15 | 15 | 15 | 15 | ··· ··· | 15 |
exponent | 9 | 8 | 7 | 6 | ··· ··· | 0 |
幂的定义本身就是累乘,求多少次幂就要累乘多少次,显然这个算法是低效的,base变量没有充分利用起来,唯一的好处就是很好理解。
二、化繁为简求幂
用递归的思想 拆解大数为小数 (此处是把小幂化大幂)
时间复杂