首页 > 其他分享 >小白必看详解循环语句,看完必会!

小白必看详解循环语句,看完必会!

时间:2024-11-27 21:34:33浏览次数:7  
标签:console log while 循环 小白必 var 完必会 执行 详解

循环语句

循环的概念

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

循环包含三大语句: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、表达式可以是常量、变量或任意可计算为布尔值的表达式,该表达式会被自动转换为布尔类型。可以将其理解为循环的继续条件,条件满足时执行大括号{}内的代码,否则跳过。

3、执行代码块可以包含多行代码,由大括号{}界定,这部分称为循环体。

4、建议避免表达式始终为true的情况,以防止产生无限循环。

5、while循环的执行流程是:首先判断表达式是否为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循环采取的是“先判断条件,后执行代码”的逻辑。若条件不满足(即为false),则循环体内的代码一次也不会执行,即最少执行0次。因此,while循环常被用于那些可能执行多次,但也可能根本不执行的情况。

相反,do-while循环则是“先执行代码,后判断条件”。这意味着无论条件是否满足,循环体内的代码至少会被执行一次。因此,do-while循环更适合那些至少需要执行一次的场景。

总结来说,选择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)

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

示例:打印一个正方形

image

image

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

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)

示例:打印三角形

image

image

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);

标签:console,log,while,循环,小白必,var,完必会,执行,详解
From: https://blog.csdn.net/x1ao_fe1/article/details/143954540

相关文章

  • 详解 PyTorch 中的 DataLoader:功能、实现及应用示例
    详解PyTorch中的DataLoader:功能、实现及应用示例在PyTorch框架中,Dataloader是一个非常重要的类,用于高效地加载和处理来自Dataset的数据。Dataloader允许批量加载数据,支持多线程/多进程加载,并可进行数据混洗和采样,极大地提高了模型训练的效率和灵活性。Dataloader......
  • 详解 PyTorch 中的 Dataset:功能、实现及应用示例
    详解PyTorch中的Dataset:功能、实现及应用示例在机器学习和深度学习中,Dataset类是一个抽象类,通常用于封装对于数据集的各种操作,包括访问、处理和预处理数据。Dataset为数据加载提供了一个标准的接口,使其能够以一致的方式被进一步的数据处理工具和模型训练过程使用。Da......
  • Java设计模式 —— 【创建型模式】原型模式(浅拷贝、深拷贝)详解
    文章目录前言原型模式一、浅拷贝1、案例2、引用数据类型二、深拷贝1、重写clone()方法2、序列化总结前言先看一下传统的对象克隆方式:原型类:publicclassStudent{privateStringname;publicStudent(Stringname){this.name=name;......
  • Linux网络编程——epoll原理详解及epoll反应堆模型
     设想一个场景:有100万用户同时与一个进程保持着TCP连接,而每一时刻只有几十个或几百个TCP连接是活跃的(接收TCP包),也就是说在每一时刻进程只需要处理这100万连接中的一小部分连接。那么,如何才能高效的处理这种场景呢?进程是否在每次询问操作系统收集有事件发生的TCP连接时,把这10......
  • 【C++】C++11新特性详解:可变参数模板与emplace系列的应用
    C++语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C++相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C++内存管理模板初阶String使用String模拟实现Vector使用及其模拟实现List使用及其模拟实现容器适配器Stack与QueuePriority......
  • 【java开发】Java中的FileUtils类使用详解
    在Java开发中,文件操作是一个非常常见的需求。ApacheCommonsIO库中的FileUtils类提供了丰富的文件操作功能,极大地简化了文件系统的管理。本文将浅入深出地介绍FileUtils类的使用,并通过实例演示其功能。一、FileUtils简介FileUtils是ApacheCommonsIO库中的一个工具类,它提供了......
  • [C++] 结构体 struct 详解
    目录前言演示用编译器及其标准DevC++6.7.5Redpanda C++14先 赞 后 看  养  成 习 惯 正文1、结构体(struct)是什么概念struct与calss的区别应用场景:2、定义、声明与初始化三种定义结构体的方法:结构体变量初始化1.默认构造函数......
  • AI在人力资源-员工关系中的应用详解
    AI在人力资源-员工关系中的应用详解目录员工与企业关系劳动合同智能管理工作环境优化建议员工之间的关系社交网络分析提升团队合作员工互动情绪监控劳动关系管理劳动争议预测与调解建议员工申诉自动分类与分析代码示例与解读示例:自动化意见收集与分类员工与企业......
  • AI在人力资源-组织发展中的应用详解
    AI在人力资源-组织发展中的应用详解目录战略制定AI驱动的市场和竞争分析组织战略模拟与预测结构改进组织网络分析(ONA)优化结构基于AI的职位职责重新设计流程优化业务流程自动化与效率分析流程瓶颈检测与优化建议代码示例与解读示例:组织网络分析(ONA)战略制定AI驱......
  • jmeter测试udp接口详解
    jmeter测试udp广播(jmeter发送udp)jmeter测试udp广播(jmeter接收udp)先下载安装第三方插件下载链接:https://jmeter-plugins.org/install/Install/ 将下载的插件放在lib/ext目录里面 然后重启jmeter,如下图操作:          此时可以看到lib/ext目录里面多了......