循环语句

循环语句

循环的概念

重复的执行一段代码,避免死循环,提高效率(时间复杂度-关注 和 空间复杂度-不关注)

循环包含三大语句:while语句、do while语句、for语句

循环的三要素:

初始值(初始的变量)

迭代量(基于初始的改变)

条件(基于初始的判断)

while语句

while(条件表达式(返回true和false)){

    执行的代码

}

var初始值变量=值

while(条件){

    迭代量

    执行的代码

}

示例(循环打印1-10)

var i=1

while(i<=10){

    console.log(i)

    i++

}

示例(循环打印1加到100)

//  1加到100

var number=0

var sum=0

while(number<100) {

    number++

    sum+=number

}

console.log(sum);

//  100加到1

var i=100

var sum=0

while(i>=1) {

sum+=i

i--

}

console.log(sum);

注意: 

1、while循环必须按照上述语法格式来写, 只能更改表达式内容和执行代码.

2、表达式可以是常量,变量或者其他表达式,该表达式会被强制转换为boolean类型, 可以理解表达式就是循环的条件, 条件成立则进入括号{}里面执行代码,否则不进入;

3、执行代码可以有多行, {}所包含的称为循环体.

4、表达式不要一直是true, 避免死循环.

5、while循环的顺序是: 先判断表达式是否为true, 若true则执行执行代码, 然后再继续判断表达式是否为true,… 直到判断表达式为false才会跳出循环, 执行while后面的代码

时间复杂度(判断内容执行效率 依照次数执行计算)

do while(对应的while唯一的区别是先做 意味最少走一次)

do{

    执行的代码

}while(条件)

var初始值=值

do{

    执行的代码

    迭代量变化

}while(条件)

示例

var isEmpty=true

do{

    console.log('有人不');

    isEmpty=false;

}while(isEmpty)

1+2+...+100

var i=0

var sum=0

do{

    i++

    sum+=i

}while(i<100)

while和do while区别

while是先判断后执行 do while 先执行后判断

do while 最少执行一次 while最少执行0次

常用while来写一些执行多次的内容(最少没规定) do while(规定必须要执行的时候)

for循环(常用的)

for(初始值;条件;迭代量){

    //执行的代码 跟if一样 如果你执行的代码只有一种情况下可以省略{}

}

示例(1+2+...+100)

var sum=0

for(var i=0;i<100;i++){

    sum+=i

}

面试题:for(;;)错了吗 (没错的 也意味着对应的里面的内容可以被省略)

for(;;){

    console.log('hello');

}

//死循环 省略迭代量 和 条件 必定是死循环

vari=0

for(;i<100;i++){

    console.log('我执行了'+i+'遍');

}

console.log(i);//100

时间复杂度(判断内容执行效率 依照次数计算)

概述:从传统意义上对应的代码时间复杂度越低对应的执行速度越快(效率越高)

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++){

    varj=1//由i和2决定

    while(j<100){

        j*=2

    }

}

O(n^2)(双层循环嵌套 平方阶)

for(var i=0;i<100;i++){

    for(varj=0;j<100;j++){

console.log('我执行了'+j+'遍')

   }

}

时间复杂度O(1)<O(logN)<O(n)<O(nlogn)<O(n^2)

while的时间复杂度低于for循环(算法的优化可以使用while来替代for)

循环嵌套(将多个循环嵌套在一起)

示例:打印一个正方形

//外层循环控制行  内层循环控制列

var row=4

var col=10

for(var i=0;i<row;i++){

    var j=0

    //每行的字符串

    var rowStr=""

    while(j<col){

        //字符串拼接

        rowStr+='+'

    }

    document.write(rowStr+"<br>")

}

//执行次数 外层循环次数*内层循环次数

循环嵌套最多套俩层O(n^2)

示例:打印三角形

for(var i=0;i<6;i++){

    //内层的循环条件依赖于外层

    var str=''

    for(var j=0;j<i;j++){

    str+='*'

    }

    document.write(str+"<br>")

}

break

break跳出代码块(switch以及循环中)只会跳出当前break所在层的循环(这个循环会被结束)

示例

// 1、判断一个数是不是合数。(指自然数中除了能被1和本身整除外, 还能被其他的数整除( 不包括0) 的数。)

var number=prompt()

//判断是否它有可以被除自身和1之外整除的数

for(var i=2;i<number;i++) {

if(number%i==0) {

alert("当前数为合数");

break;

   }

}

// 2、判断一个数是不是素数。(除了1和它本身以外不再有其他的除数整除。)

var count=0

for(var i=2;i<number;i++) {

if(number%i==0) {

count++

break;

   }

}

if(count==0){

console.log("当前数为素数");

}

示例讲解(break练习)

//看代码判断打印的内容

var number//undefined

for(var i=0;i<3;i++) {// i 0 1 2

for(var j=0;j<i;j++) {//i为0的时候 没有东西

if(i==1||j>=1) {

number=i*j

console.log(j);//0 1

break

console.log(i);//break后面的内容不会走

       }

   }

console.log(number);//3次 undefined 0 2

}

//undefined 0 0 1 2

continue

continue跳过本次循环(只能在循环内使用)循环还在继续

//  1、求整数1~100的累加值,但要求跳过所有个位为3的数

var sum=0//接受对应的累加值

for(var i=1;i<=100;i++) {

if(i%10==3) {

continue;//遇到continue跳过本次开始下一次循环

   }

sum+=i

}

document.write(sum);

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容