什么是算法,百度解释说:
指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量
作为一个程序员都需要知道算法,我认为算法,就是:
花最少的时间,占用最少的空间,在我们的需要下
把程序运行起来
下面我举2个例子,来体检一下算法:
计算100的和
1:第一种方法:
循环求和(我这里用的js)
(function () { let sum = 0; let n = 100; for (let i = 0; i <= n; i++) { sum += i; } console.log(sum); })();
输出50502:第二种方法:
运用公式计算
(function () { let sum = 0; let n = 100; sum = (n + 1) * n / 2; console.log(sum); })(); 输出5050上面2种算法都能完成计算,但是第一种循环,里面循环了100次,而第二种只需要执行一次,两者运用的时间大有不同,所以在有能力的情况下我们提倡第二种。
计算10的阶乘
第一种,递归
let n = 10; function fx(n) { if (n == 1) { return 1 } return n * fx(n - 1) } console.log(fx(n)); //3628800第二种,循环
(function () { let n = 1; for (var i = 1; i <= 10; i++) { n *= i; } console.log(n); })(); //3628800递归执行了10次 开笔了10次空间,而循环只有一个空间,所以在计算程度不复杂的情况下
第二种方法好点