三种循环的讲解
一、了解循环
- JS循环的概念
循环就是重复做一件事, 在程序中指的是重复执行某段代码.. 不成立为止.
如: 大家每天早上7点起床, 9点上课, 12点吃饭, 19点晚自习, 21点下课, 23点睡觉, 第二天又重复7点起床, ….. , 直到毕业找到工作就可以跳出这个循环.
2.死循环的概念
死循环就是重复执行代码, 不会停止.
死循环会造成程序卡死甚至崩溃等问题, 我们不能写会造成死循环的代码.
3.循环的用处
循环的用处非常广泛, 特别是对大量的数据进行操作的时候,
如:求若干个数之和; (重复做加法)
求某个班全部学生的总成绩;(重复做加法)
4.循环的分类
循环有很多种方式, 如: while, do-while, for, for-in, for-each等.
这里我们先介绍最常见的,也是很多其他计算机语言通用的三种方式:
1). while循环 2). do-while循环 3). for循环
二、常用的循环语句
1.while 循环
while循环语法格式:
while(表达式)
{
执行代码;
}
注意:1, while循环必须按照上述语法格式来写, 只能更改表达式内容和执行代码.
2, 表达式可以是常量,变量或者其他表达式,该表达式会被强制转换为boolean类型, 可以理解表达式就是循环 的条件, 条件成立则进入括号{}里面执行代码,否则不进入;
3, 执行代码可以有多行, {}所包含的称为循环体.
4, 表达式不要一直是true, 避免死循环.
5. while循环的顺序是: 先判断表达式是否为true, 若true则执行执行代码, 然后再继续判断表达式是否为true, …. 直到判断表达式为false才会跳出循环, 执行while后面的代码
重点案例
// 计算1~100之间所有整数的和 var num = 0; var num2 = 0 while (num<100){ num++ num2=num+num2 } console.log(num2);
// 1.打印人的一生,从1岁到100岁 var nun = 1; while(nun<=100){ console.log(nun+'岁'); nun++ }
<!-- 3.弹出一个提示框,你爱我吗?如果输入我爱你,就提示结束,否则,一直询问。 --> <script> var nun = prompt('你爱我吗?'); while(nun!="我爱你"){ var nun = prompt("你爱我吗?") }
2.for循环
1.for循环语法格式:
for (初始化变量; 条件表达式; 操作表达式) {
执行代码;
}
1. 初始化变量 就是用var 声明一个普通变量,通常用于作为计数器使用
2 .条件表达式 就是用来决定每一个循环是否执行 就是终止的条件
- 操作表达式 是每次循环最后执行的代码 经常用于计算器变量进行更新(递增或者递减)
注意: 1, 表达式1: 可写循环初始值, (可以不填)
2, 表达式2: 循环条件
3, 表达式3: 循环增量(减量)
4, 两个分号必须写.
2.示例:计算1+2+3+……+100之和。
for循环将 循环初始值, 循环条件, 循环变量增量写在了一起注意: 三个表达式都是可选填写, 但是如果后两个不写,会造成死循环; 而第一个为初始化值,所以我们三个一般都要写上.
3.循环的嵌套
一个循环语句内又包含另一个完整的循环语句;
三种循环都可以相互嵌套; 而for循环嵌套for循环的使用会更频繁, 以下的循环嵌套都是合法的.
for循环案例
// 弹出输入框输入总的班级人数(num ) // 依次输入学生的成绩(保存起来score ),此时我们需要用到for循环,弹出的次数跟班级 // 总人数有关系条件表达式i<= num // ③进行业务处理:计算成绩。先求总成绩 ( sum ),之后求平均成绩( average )④弹出结果 var ret = 0; var pjz = 0; var num = prompt('请输入') for (var i = 1; i <= num; i++) { var nue = prompt('亲您输入' + i + '学生成绩') //因为从prompt转传来的是字符串所有我们应该把它转换成数值型 ret =parseInt(nue) + ret } pjz = ret/num; alert('班级的总成绩是:'+ret); alert('班级的品均值是:'+pjz);
三、双层for循环
1. 双层for循环 语法结构
for(外层的初始化变量;外层的条件表达式;外层的操作表达式){ // for(里层的初始化变量;里层的表达式;里层的操作表达式){ // 执行语句 // } // }
1.我们可以把里面的循环看做是外层循环的语句
2.外层循环一次,里面的循环执行全部
4. 代码验证
for (var i=1;i<=3;i++){ console.log('这是外层循环的第'+i+'次'); for(var j=1;j<=3;j++){ console.log('这是里面的循环的第'+j+'次'); } }
案例】
九九乘法表案例
var num = ''; for (var i = 1; i <= 9; i++) { for (var j = 1; j <= i; j++) { num += j + 'x' + i + '=' + j * i+'\t'; } num += '\n' } console.log(num);
for循环打印五颗星星
// 用for循环打印5颗星星 var str = ''; for (var i = 1; i <= 5; i++) { str = str + '*'; } console.log(str); var unm = prompt('请输入') var str = ''; for (var i = 1; i <= unm; i++) { str = str + '*'; } console.log(str);
打印五行五列+输入多少行列打印多少
打印5行5列星星 var num2 = ''; for(var i =1; i<=5;i++){ for(var j=1;j<=5;j++){ num2 = num2+' * '; } num2= num2+'\n' } console.log(num2); var num = prompt('请输入您打印的行数') var num2 = prompt('请输入你要打印的列数') var lie = ''; for(var i=1;i<=num;i++){ for(var j=1;j<=num2;j++){ lie=lie+'*'; } lie=lie+'\n'; } console.log(lie);
do while 循环
1.语法结构
do{ //循环体 }while(条件表达式)
2.执行思路 跟while不同的地方在于都while先执行一次循环再判断条件 如果条件表达式结构为真,则继续执行循环体。否则退出循环
3.代码验证
do while 是先执行后判断 最少执行一次 (常用于人机交互)
while是先判断后执行 最少执行0次(对应的循环处理)
break和continue
break是用于跳出 他可以跳出对应的switch块以及对应的循环块(跳出来了也是意味着本次对应的循环或对应的代码执行结束了)
contiue是用于跳过某个循环 下次循环继续执行
时间复杂度概述
在恒定的环境内,他的执行次数对应的变量的比列构成的值为时间复杂度。时间复杂度是一定程度上表示当前的程序的运行速度,时间复杂度降低那么运行速度就越快,还有一个就是我们需要考虑的时间复杂度,空间复杂度是指你的程序在运行的时候开辟的内存大小,空间复杂度越低占用的内存就越少(内存不再优先考虑)
总结
从上可得 循环嵌套不会超过俩次!从对应得时间复杂度来看 我们可以得到logn和n是比较性常用得 我们发现logn是比n要快得,所以在后续得优化中我们采用logn级别得时间复杂度来替代n。对于for循环和while循环 对应得时间复杂度来说while要快于for循环,用while来替代for循环