题目:求x的n次方
- 解法一:for循环
function fun1(x,n){
let result = 1;
for(let i = 0; i< n; i++) {
result = result * n;
}
return result;
}
此时时间复杂度为O(n)
- 解法二:递归
function fun2(x,n){
if(n === 0) return 1;
// 先求出 x的n/2 次方
let t = fun2(x,n/2);
if(n%2){
return t*t*x;
}
return t*t;
}
递归算法时间复杂度 = 递归次数 * 每次递归的时间复杂度
fun2(x,n/2)递归的次数为log2(n),每次乘法次数为1
因此,整个的时间复杂度为O(logn)