算法初入门

209 阅读2分钟

什么是算法,百度解释说:

指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度时间复杂度来衡量

作为一个程序员都需要知道算法,我认为算法,就是:

花最少的时间,占用最少的空间,在我们的需要下

把程序运行起来

下面我举2个例子,来体检一下算法:

计算100的和

    1:第一种方法:

循环求和(我这里用的js)
   (function () {        let sum = 0;        let n = 100;        for (let i = 0; i <= n; i++) {            sum += i;           }        console.log(sum);    })();
   输出5050

  2:第二种方法:

运用公式计算
   (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次空间,而循环只有一个空间,所以在计算程度不复杂的情况下

第二种方法好点