循环控制语句
概述:
环控制语句 根据对应的条件来控制对应的代码片段的执行次数(多次执行 循环执行),常用的循环
控制语句 while do while for...循环是重复执行多次代码所以对应的执行次数是可以计算的,那么对应
的执行次数和对应的条件判断中的相关条件的一个关系就是时间复杂度(时间复杂度是用于区分效率的
他是用来优化程序的)。然后对应的循环在书写过程中我们需要尽可能的避免死循环(无限循环)。
循环的三要素
- 初始值: 初始的变量值
- 迭代量:基于初始值的变化
- 判断条件: 对应的执行循环中代码的条件
程序控制语句
条件控制语句 (根据对应的条件执行对应的代码片段)
循环控制语句 (根据循环条件循环执行多次对应的代码)
循环控制语句的流程
定义初始值
设置迭代条件(初始值的基础上迭代)
执行的代码 循环体
设置终止条件 (布尔类型表达式 返回的是boolean的值(强制转换为boolean类型))
常用的循环控制语句
while
do while
for
...
while循环
1
2
3
4
5
6//外部定义初始值 var 初始值变量 = 值 while(终止条件(当他为false的时候就会结束对应的循环)){ //执行的代码 循环体 //迭代条件 }
示例
打印1-100的值
1
2
3
4
5var i = 1 while(i<=100){ console.log(i) i++ }
求和 1-100的求和
1
2
3
4
5
6
7
8var i = 1 var sum = 0 while(i<=100){ console.log(i) sum += i i++ } console.log(sum)
var关键词修饰的变量进行变量提升 伪全局变量
var关键词修饰的变量会被预编译 但是不会读取赋值操作 而是强制赋值undefined
在循环中不建议声明变量 会覆盖之前的值 会加大空间复杂度
while循环嵌套
1
2
3
4
5while(条件){ while(条件){ 循环体 } }
循环嵌套时间复杂度会增加(不建议嵌套超过俩层)
循环嵌套执行的次数为外层循环次数*内层循环次数
示例
打印乘法口诀表 (外层控制行 内层控制列)
1
2
3
4
5
6
7
8
9
10
11
12
13/* 乘法口诀表为9行9列 1行为1列 2行为2列 .... 9行为9列 */ var row = 1,col //声明行和列 while (row <= 9) { //打印行 col = 1 //列值返回初始值 为了下一行 while (col <= row) { //列最大为行数 document.write(row+'*'+col+'='+row*col+' ')//在文档上书写内容 col++ } document.write('<br/>') //换行 row++ }
打印直角三角型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18/* * *** ***** ******* ********* */ var row = 0,col while(row<5){ col = 0 //处理列 列和行的关系 行数*2+1 while(col < row*2+1){ document.write('*') col++ } document.write('<br/>') //换行 row++ }
do while循环
1
2
3
4var 初始值变量 = 初始值 do{ 循环体 }while(条件)
do while和while的区别
while 最少执行0次 do while 最少执行一次
do while常用于 先执行对应的内容再判断是否循环(人机交互)
示例
打印1-100
1
2
3
4
5var i = 1 do{ console.log(i) i++ }while(i<=100)
练习
do while 打印1-100的3的倍数
计算1-100内容 3的倍数及7的倍数的和
猜拳游戏
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19//0 石头 1 剪刀 2 步 Math.random 随机取0-1的数 不包含1 包含0 var computedNumber = parseInt(Math.random()*3) do { //用户出拳的操作 var userNumber = prompt('请输入对应的内容 0 石头 1 剪刀 2 步') if (userNumber != 0 && userNumber != 1 && userNumber != 2) { alert('输入出错 重新输入') } //对应的比对 else if (computedNumber == userNumber) { console.log('打平了') } else if ((computedNumber == 0 && userNumber == 2) || (computedNumber == 2 && userNumber == 1) || ( computedNumber == 1 && userNumber == 0)) { console.log('恭喜你取得胜利') } else { console.log('很遗憾、你输了') } } while (userNumber != 0 && userNumber != 1 && userNumber != 2)
do while也可以嵌套
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15/* 打印四行五列的矩形 */ var row = 0, col, str = '' do { col = 0 do { str += '*' col++ } while (col < 5) str += 'n'//换行 row++ } while (row < 4) console.log(str)
for循环
任何循环之间可以互相转换 while循环适用于你不知道执行次数的时候 for循环适用于知道执行次数
1
2
3for(初始值;迭代条件;迭代量){ 执行的代码 循环体 }
示例
打印1-100之间的数
1
2
3for(var i=0;i<100;i++){ console.log(i+1) }
打印1-100之间能整除2和3的数
1
2
3
4
5for(var i=1;i<=100;i++){ if(i%2==0 && i%3==0){ console.log(i) } }
打印1-100之间的偶数和
1
2
3
4
5
6
7var sum = 0 for(var i=1;i<=100;i++){ if(i%2==0){ sum+=i } } console.log(sum)
for循环嵌套
任意循环可以互相嵌套
1
2
3
4
5for(初始值;迭代条件;迭代量){ for(初始值;迭代条件;迭代量){ //循环体 } }
示例
打印直角三角型
1
2
3
4
5
6
7
8
9
10
11
12
13/* * *** ***** ******* ********* */ for(var i=0;i<5;i++){ for(var j=0;j<2*i+1;j++){ document.write('*') } document.write('<br/>') }
练习
打印等腰三角形
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19/* * *** ***** ******* ********* */ for(var i=0;i<5;i++){ var line = '' //打印空格 for(var j=0;j<4-i;j++){ line += ' ' } //打印* for(var j=0;j<2*i+1;j++){ line += '*' } console.log(line) }
找到1-100之间所有的素数 (只能被自身和1整除)
1
2
3
4
5
6
7
8
9
10
11
12
13for(var i=1;i<=100;i++){ //从2数到自身-1 var count = 0 //计算因数的个数 for(var j=2;j<i;j++){ //用i除以j if(i%j==0){ //是有因数 count++ } } if(!count){ //判断因数是否还是0个 如果是0表示当前为素数 console.log(i) } }
打印乘法口诀表
1
2
3
4
5
6
7for(var i=1;i<=9;i++){ var line = '' for(var j=1;j<=i;j++){ line+=i+'*'+j+'='+i*j+'t' } console.log(line) }
打印 1-100所有的偶数每行三个
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16var line = '' var count = 0 for (var i = 1; i <= 100; i++) { if (i % 2 == 0) { count++ line += (i+'t') //满足了3个条件 if (count==3) { //到达三个加上换行符 line+='n' //重新计数 count = 0 } } } console.log(line)
循环总结
循环是用于反复多次执行一段代码
循环的三种方案可以互相嵌套 以及三种方法可以随意转换 常用的为for和while
while循环用于处理不知道对应的执行次数 for循环常用于知道对应的执行次数
循环要避免对应的死循环(死循环就是循环的迭代条件一直为true 没有办法停止)
while死循环写法 for死循环写法
1
2
3
4
5
6while(true){ //死循环 } for(;;){ //死循环 }
while循环的时间复杂度低于for循环 for循环的执行效率要低于while循环
do while循环先做后判断 最少执行一次 while及for最少执行0次
最后
以上就是秀丽苗条最近收集整理的关于循环控制语句 循环控制语句的全部内容,更多相关循环控制语句内容请搜索靠谱客的其他文章。
发表评论 取消回复