1.循环的概念
循环就是重复做一件事, 在程序中指的是重复执行某段代码。
死循环就是重复执行代码, 不会停止。
死循环会造成程序卡死甚至崩溃等问题, 我们不能写会造成死循环的代码。
死循环:无法靠自身的控制终止的循环即死循环
循环的三要素:
初始值(初始的变量值)
迭代量 (基于初始值的改变)
条件 (基于初始值的判断)
循环的特点:循环不执行完成,就不会显示结果。
2.while循环的使用
while循环语法格式:
while(表达式) {
执行代码;
迭代量;
}
1, while循环必须按照上述语法格式来写, 只能更改表达式内容和执行代码.
2, 表达式可以是常量,变量或者其他表达式,该表达式会被强制转换为boolean类型, 可以理解表达式就是循环的条件, 条件成立则进入括号{}里面执行代码,否则不进入;
3, 执行代码可以有多行, {}所包含的称为循环体.
4, 表达式不要一直是true, 避免死循环.
5, while循环的顺序是: 先判断表达式是否为true, 若true则执行执行代码, 然后再继续判断表达式是否为true, …. 直到判断表达式为false才会跳出循环, 执行while后面的代码
6, while循环最少执行0次
例:计算1+2+3+……+100之和。
var sum = 0
var i = 0
while(i<= 100){
sum+=i;
i++
}
console.log(sum);
3.do…while循环的使用
do-while循环语法格式:
do {
执行代码;
迭代量;
} while(表达式)
注意:
1, do-while和while比较类似, 也有表达式和执行代码.
2, do-while和while的区别在于判断条件的先后不一样, while是先判断条件, 而do-while是先执行再判断; 所以不管do-while表达式的条件是否成立, 都至少会执行一次循环体.
例:计算100-1之和。
var sum = 0
var i = 100
do{
sum+=i;
i–;
}while(i>0)
console.log(sum);
4.for循环的使用
for循环语法格式:
for (初识值; 条件; 迭代量){
执行代码;
}
注意:两个分号必须写.
初识值、条件和迭代量都是可选填写, 但是如果后两个不写,会造成死循环; 所以我们三个一般都要写上.(面试题 :for(;😉 错了吗(没错的 也意味对应的里面的内容可以被省略))
例:计算1+2+3+……+100之和。
var sum = 0
for(var i=0;i<=100;i++){
sum += i
}
5.break和continue关键字的区别
break关键字
break 语句会立即退出整个循环,如何继续执行循环后面的其它语句。(注意:break只会跳出当前所在的循环层,如break外面还嵌套了一个循环,则外面这个循环依旧执行)
continue关键字
continue 语句代表立即退出循环,但退出的是当前循环继续执行下一次循环。
6.时间复杂度(判断内容执行效率 依照次数计算)
概述:从传统意义上 对应的代码时间复杂度越低对应的执行速度越快(效率越高)
O(1) (每行只执行一遍 常数阶)
var i = 0
i++
if(i<10){
console.log(i)
}
O(logN) (俩个值来决定 对数阶)
var i = 1 //由i和2决定
while(i<100){
i*=2
}
O(n) (由对应的一个值决定的 线性阶)
for(var i=0;i<100;i++){
console.log(‘我执行了’+i+‘遍’)
}
O(nlogn) (循环嵌套对应的对数阶循环 线性对数阶)
for(var i=0;i<100;i++){
var j = 1 //由i和2决定
while(j<100){
j*=2
}
}
O(n^2) (双层循环嵌套 平方阶)
for(var i=0;i<100;i++){
for(var j=0;j<100;j++){
console.log(‘我执行了’+j+‘遍’)
}
}
时间复杂度 O(1) < O(logN) <O(n)<O(nlogn)<O(n^2)
while的时间复杂度低于for循环 (算法的优化可以使用while来替代for)
7.循环嵌套(将多个循环嵌套在一起)
一个循环语句内又包含另一个完整的循环语句; 三种循环都可以相互嵌套; 而for循环嵌套for循环的使用会更频繁, 以下的循环嵌套都是合法的.
//while里面嵌套while
while()
{
while()
{…}
}
//do…while里面嵌套do…while
do
{ do
{…}while();
}while();
//for里面嵌套for
for(;😉 {
for(;😉 {…}
}
例:99乘法表
var str
for (var i = 1; i < 10; i++) {
str = ‘’
for (var j = 1; j <= i; j++) {
str += j + ‘X’ + i + ‘=’ + i * j + ’ ’
}
console.log(str);
}
循环嵌套最多嵌套两层 时间复杂度为O(n^2)