算法
提到算法,大家有没有胆怯啊?反正我是怕了。简单来讲,算法就是我们平常生活中的一些常识性计算的行为,是不是有不怕了?
说起算法,不要怀疑自己,自己数学不好,不一定算法不好,算法好的人,数学也不一定好。只要现在好好学,总会好的。
先给大家简单介绍下累加和累积
累加:
累加:将一系列的数据加到一个变量里面,最后得到累加的结果。
例如;将1-100的数求累加和
小球从高处落下,每次返回到原来的一半,求第10次小球落地时小球走过的路程。
累积:将一系列的数据乘积到一个变量里面,得到累积的结果。
常见的就是n的阶层
var n = 100;
var result = 1;
for(var i=0; i<=n; i++){
result *=i;
}
alert(result);
一般形式:
累加: v += e;
累积: v *= e;
v代表累加和/累积,e代表累加/累积项
算法要点:
1.初始化v和e
累加:v=0;
累积:v=1;
e的初始化,如果累加/累积项比较复杂,可能会分解为几个子项分别初始化,比若说计算圆周率的问题,累加项分解为符号、分子、分母三部分
2.循环控制条件:
一种是固定次数,比如说计算弹跳距离的问题,计算数列前20项之和的问题
次数不固定:而是要满足某个条件,计算圆周率问题要求最后一项的绝对值要小于10的负六次方
3.确定累加/累积项的变化,比如前20项之和,是将当前的分子分母之和作为下一次的分母,当前的分母为分子。
圆周率问题;是将符号取反,分母加二,然后得出下一项。
例如;将1-100的数求累加和
小球从高处落下,每次返回到原来的一半,求第10次小球落地时小球走过的路程。
累积:将一系列的数据乘积到一个变量里面,得到累积的结果。
常见的就是n的阶层
var n = 100;
var result = 1;
for(var i=0; i<=n; i++){
result *=i;
}
alert(result);
一般形式:
累加: v += e;
累积: v *= e;
v代表累加和/累积,e代表累加/累积项
算法要点:
1.初始化v和e
累加:v=0;
累积:v=1;
e的初始化,如果累加/累积项比较复杂,可能会分解为几个子项分别初始化,比若说计算圆周率的问题,累加项分解为符号、分子、分母三部分
2.循环控制条件:
一种是固定次数,比如说计算弹跳距离的问题,计算数列前20项之和的问题
次数不固定:而是要满足某个条件,计算圆周率问题要求最后一项的绝对值要小于10的负六次方
3.确定累加/累积项的变化,比如前20项之和,是将当前的分子分母之和作为下一次的分母,当前的分母为分子。
圆周率问题;是将符号取反,分母加二,然后得出下一项。