O(logN)
for(int i=1;i<n;i=i*2){
System.out.println("i="+i);
}
时间复杂度
1+2+3+...+n
求和公式: n(n+1)/2
y=n*(n+2)/2
-----------------------------------
1+2+3+4+5+6.+n为什么=n(n+1)/2
首数加尾数等于n+1,次首数加次尾数等于n+1
所以一共n/2个n+1所以一共n/2个n+1.如果n为偶,自然没问题,如果n为奇数,那么中间的数等于(n+1)/2.
因此此公式成立.
斐波那契数列
int[] array = {1,1,2,3,5,8,13,21,34};//例如这种数列 //时间复杂度为n次方 public static int fib(int n){ if(n==0||n==1){ return n; } return fib(n - 1) + fib(n - 2); } //改进的时间复杂度为 public static int fib2(int n){ int first = 1; int second = 1; int result = 0; for(int i=3;i<=n;i++){ result = first + second; first = second; second=result; } return result; }