算法的时间复杂度和空间复杂度
计算算法的时间所消耗的时间,一般有两个方案:
1.事后统计的方法,这个不可靠,1.想对算法所消耗时间进行测评,必须先依据算法的编制的程序让它实际运行 2.所测时间依赖与计算机的硬件软件等因素,有时容易掩盖算法本身的优势
2.事前统计的方法,人们通常采用的方法。一个高级语言编写的程序在计算机上运行所消耗的时间有4大因素:1.算法采用的策略、方法,2.编译代码的质量,3.硬件的执行指令的速度,4.问题的规模
时间复杂度:
一个经验规则:其中c是一个常量,如果一个算法的复杂度为c 、 log2n 、n 、 n*log2n ,那么这个算法时间效率比较高 ,如果是2n ,3n ,n!,那么稍微大一些的n就会令这个算法不能动了
空间复杂度:一个算法的空间复杂度定义为该算法所消耗的存储空间,一个算法在计算机中所占用的空间包括:1.存储算法本身所占用的空间 2.算法输入输出所占用的空间 3.运行过程中临时占用的空间
js实现斐波那契数列
function fn(n){
if(n <= 2){
return n
}else{
return fn(n-1) + fn(n-2)
}
}