循环控制语句

循环控制语句

概述:

环控制语句 根据对应的条件来控制对应的代码片段的执行次数(多次执行 循环执行),常用的循环

控制语句 while do while for...循环是重复执行多次代码所以对应的执行次数是可以计算的,那么对应

的执行次数和对应的条件判断中的相关条件的一个关系就是时间复杂度(时间复杂度是用于区分效率的

他是用来优化程序的)。然后对应的循环在书写过程中我们需要尽可能的避免死循环(无限循环)。

循环的三要素

- 初始值: 初始的变量值

- 迭代量:基于初始值的变化

- 判断条件: 对应的执行循环中代码的条件

程序控制语句

  • 条件控制语句 (根据对应的条件执行对应的代码片段)

  • 循环控制语句 (根据循环条件循环执行多次对应的代码)

循环控制语句的流程

  • 定义初始值

  • 设置迭代条件(初始值的基础上迭代)

  • 执行的代码 循环体

  • 设置终止条件 (布尔类型表达式 返回的是boolean的值(强制转换为boolean类型))

常用的循环控制语句

  • while

  • do while

  • for

  • ...

while循环

//外部定义初始值
var 初始值变量 = 值
while(终止条件(当他为false的时候就会结束对应的循环)){
	//执行的代码 循环体
	//迭代条件
}
示例

打印1-100的值

var i = 1
while(i<=100){
	console.log(i)
	i++
}

求和 1-100的求和

var i = 1
var sum = 0
while(i<=100){
	console.log(i)
	sum += i
	i++
}
console.log(sum)
  • var关键词修饰的变量进行变量提升 伪全局变量

  • var关键词修饰的变量会被预编译 但是不会读取赋值操作 而是强制赋值undefined

  • 在循环中不建议声明变量 会覆盖之前的值 会加大空间复杂度

while循环嵌套
while(条件){
 while(条件){
 	循环体
 }
}
  • 循环嵌套时间复杂度会增加(不建议嵌套超过俩层)

  • 循环嵌套执行的次数为外层循环次数*内层循环次数

示例

打印乘法口诀表 (外层控制行 内层控制列)

/*
乘法口诀表为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++
}

打印直角三角型

/*
*
***
*****
*******
*********
*/
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循环

var 初始值变量 = 初始值
do{
	循环体
}while(条件)
do while和while的区别
  • while 最少执行0次 do while 最少执行一次

  • do while常用于 先执行对应的内容再判断是否循环(人机交互)

示例

打印1-100

var i = 1
do{
	console.log(i)
	i++
}while(i<=100)
练习

do while 打印1-100的3的倍数

计算1-100内容 3的倍数及7的倍数的和

猜拳游戏
//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也可以嵌套
/*
打印四行五列的矩形
*/
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循环适用于知道执行次数

for(初始值;迭代条件;迭代量){
	执行的代码 循环体
}
示例

打印1-100之间的数

for(var i=0;i<100;i++){
	console.log(i+1)
}

打印1-100之间能整除2和3的数

for(var i=1;i<=100;i++){
	if(i%2==0 && i%3==0){
		console.log(i)
	}
}

打印1-100之间的偶数和

var sum = 0
for(var i=1;i<=100;i++){
	if(i%2==0){
		sum+=i
	}
}
console.log(sum)
for循环嵌套

任意循环可以互相嵌套

for(初始值;迭代条件;迭代量){
	for(初始值;迭代条件;迭代量){
		//循环体
	}
}
示例

打印直角三角型

/*
*
***
*****
*******
*********
*/
for(var i=0;i<5;i++){
	for(var j=0;j<2*i+1;j++){
		document.write('*')
	}
	document.write('<br/>')
}
练习

打印等腰三角形

/*
    *    
   ***
  *****
 *******
*********
*/
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整除)

for(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)
	}
}

打印乘法口诀表

for(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所有的偶数每行三个

var 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死循环写法

while(true){ //死循环
	
}
for(;;){ //死循环
	
}
  • while循环的时间复杂度低于for循环 for循环的执行效率要低于while循环

  • do while循环先做后判断 最少执行一次 while及for最少执行0次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值