算法:‘用来操作数据,解决程序问题的一组方法’
如何去衡量不同算法之间的优劣呢?事后统计法/事前分析估算
事后统计法:
通过统计,监控,利用计算机计算器对不同算法的运行时间进行比较,从而确定算法效率的高低,但是有非常大的局限性
事前分析估算:
在计算机程序编制前,依据统计方法对算法进行估算
斐波那契数列:这个数列从第三项开始,每一项都等于前两项之和
public class Bdqs {
// 求第n个斐波那契数
// 斐波那契数列,这个数列从第三项开始。每一项都等于前两项之和
// 下标 0 1 2 3 4 5 6 7
// 数列 0 1 1 2 3 5 8 13
// 递归的方法,存在问题,当n为64的时候就很慢
// 时间复杂度,其实就是看方法(fun1)被调用了多少次,调用了多少次,就是执行多少次
public static long fun1(int n){
if(n<=1) return n;
return fun1(n-1) + fun1(n-2);
}
// 时间复杂度
public static long fun2(long n){
if(n<=1) return n;
int first = 0;
int secound =1;
// 循环n需要添加几次呢,假设求下标为2的数字,需要加1次,求下标为3的数字需要加2次,求下标为n的数,加n-1次
for(int i = 0;i < n-1;i++){
int sum = first+ secound;
first = secound;
secound = sum;
}
return secound;
}
public static void main(String [] agrs){
System.out.println(fun1(10));
}
}