求x的n次方,并且时间复杂度为O(logn)
思路:使用递归,重复利用代码,这其实是等比数列的求和公式,每次递归了做都是一次乘法操作,这也是一个常数项的操作,每一层递归都是公用一块数组地址空间的
public class TEST {
public static int function1(int x ,int n){
if (n==0){
return 1;
}
int t = function1(x,n/2);
if (n/2==1){
return t*t*x;
}
return t*t;
}
}
降低时间复杂度的斐波那契数列
int fibonacci(int first, int second, int n) {
if (n <= 0) {
return 0;
}
if (n < 3) {
return 1;
}
else if (n == 3) {
return first + second;
}
else {
return fibonacci(second, first + second, n - 1);
}
}