首页 > 其他分享 >第三天笔记

第三天笔记

时间:2023-02-08 20:45:33浏览次数:48  
标签:log ++ sum 第三天 笔记 while 循环 var

第三天笔记

程序控制语句

  • 条件控制语句(根据不同的条件进入不同的代码块)

  • 循环控制语句(根据循环条件进行多次循环)

循环控制语句流程

  1. 定义初始值

  2. 设置迭代条件

  3. 执行的代码 循环体

  4. 设置终止条件(Boolean类型表达式,返回的是Boolean的值(强制转换为Boolean))

常用的循环控制语句

  1. while

  2. do while

  3. for

  4. ···

while循环

var i=0; // 外部定义初始值
while(终止条件){
   循环体 // 执行的代码
   i++ // 迭代条件
}

示例:

1-100的和

var i=0
var sum=0
while(i<100){
   i++
sum+=i
}
console.log(sum)// 5050

拓展:

var的变量提升 是伪全局变量 会被预编译(开辟空间且赋值为undefined)预编译过程不会读取赋值操作

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

练习

求1-100的阶乘

var i=2
var sum=1
while(100>=i){
   sum*=i
   i++
}
console.log(sum)

求1-100之间5的倍数的阶乘

/*var i=0
var sum=1
while(i<100){
  i++
  if(i%5==0){
      sum*=i
  }
}
console.log(sum)
*/
// 运行次数减少 时间复杂度减小
var i=0
var sum=1
while(i<100){
   i+=5
   sum*=i
}
console.log(sum)

求100-999之间的水仙花数

var i = 100
var b,c,d
       while (i < 1000) {
           b = parseInt(i / 100);
           c = parseInt(i % 100 / 10);
           d = parseInt(i % 10);
           if (b ** 3 + c ** 3 + d ** 3 == i) {
               console.log(i+"是水仙花数");
          }
           i++
      }

循环的嵌套

  • 循环嵌套时间复杂度会增加(不建议嵌套超过两层)

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

示例:

打印乘法口诀

var row=1
var col
while(row<=9){
col=1
while(col<=row){
document.write(col+'*'+row+'='+col*row + '&nbsp')
col++
}
document.write('<br>')
row++
}

打印直角三角形

var row = 1
       var col
       while (row <= 5) {
           col = 1
           while (col <= row) {
               document.write("*&nbsp")
               col++
          }
           document.write('<br>')
           row++
      }

do while循环

var i=0;
do{
  循环体
  i++
}while()

do while 和 while 的区别

while 最少执行0此次 do while 最少执行 1 次

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

示例:

var i=1
do{
console.log(i)
i++
}while(i<=100) //条件不成立 也会执行一次循环体

练习

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

var i=1;
do{
if(i%3==0){
console.log(i+'是3的倍数');
}
i++
}while(i<=100)

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

var i=1
var sum=0
do{
if(i%3==0 || i%7==0){
sum+=i;
}
i++
}while(i<=100)
console.log(sum);

叫号系统

var code
do {
code = prompt('请输入你需要叫的技师') * 1
switch (code) {
case 1:
console.log('一号技师为你服务');
break;
case 2:
console.log('金牌技师为你服务');
break;
case 3:
console.log('88号技师为你服务');
break;
}
}while(code!=1 && code!=2 && code!=3)

do while 也可以嵌套(了解)

//打印4行5列
var row=0,col,str
do{
str=''
col=0
do{
str+='*'
col++
}while(col<5)
console.log(str)
row++
}while(row<4)

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)// 2550

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++){
for(var j=0;j<4-i;j++){
document.write('&nbsp')
}
for(var k=0;k<=2*i;k++){
document.write('*')
}
document.write('<br>')
}

求1-100的质数

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

打印所有的偶数每行3个

var count = 0;
for (var i = 1; i <= 100; i++) {
if (i % 2 == 0) {
if (count == 3) {
document.write('<br>')
document.write(i + '&nbsp')
count = 1
} else {
count++
document.write(i + '&nbsp')
}
}
}

循环总结

  • 循环用于反复多次执行一段代码

  • 循环的三种方案可以互相嵌套 以及三种方法可以随意转换 常用为for while

  • while 循环用于处理不知道对应的执行次数 for 循环常用于知道对应执行次数

  • 循环要避免对应的死循环 (死循环就是循环的迭代条件一直为true 没有办法停止)

  • while 和 for 的死循环写法

while(true){

}
for(;;){

}
  • while循环的时间复杂度低于for循环 for循环的执行效率要低于while循环

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

循环中的关键字

break 跳出循环(跳出switch块)

continue 跳出本次循环

示例

A:for(var i=1;i<=100;i++){// 这里表示给这个循环取名 A
for(var j=2;j<i;j++){
if(i%j == 0){
continue A; // 跳过 A 的本次循环
}
}
console.log(i);
}

扩展内容

时间复杂度(用O表示)

时间复杂度讲的是恒定机器内的执行次数和对应的变量的比例 也就是说执行次数越多 那么时间复杂度越高 那么对应的时间复杂度越高 执行效率越低 将时间复杂度降低就可以提高对应的效率

时间复杂度跟对应的执行次数成正比

O1 (常数阶)

每行代码只执行一次

On (线性阶)

执行n次

Ologn (对数阶)

由两个变量来控制的

var i=2
while(i<n){
i*=k// k的大小也影响时间复杂度
}

On logn 线性对数阶 线性阶包含对数阶 for(){while(){}} 递归的时间复杂度也是On logn

On2 平方阶 两个线性阶包含

Onk 次方阶 k个线性阶

······

时间复杂度排序

O1<Ologn<On<On logn<On2<Ok

空间复杂度

空间复杂度讲的是在内存开辟上 有多个变量内存被同时开辟,开辟的内存越多对应的空间复杂度越高 占用的内存大小就越大

 

标签:log,++,sum,第三天,笔记,while,循环,var
From: https://www.cnblogs.com/balloontrue/p/17103209.html

相关文章

  • API对象--Ingress(chrono《kubernetes入门实战课》笔记整理)
    【概念说明】Service的功能和运行机制,主要由kube-proxy控制的四层负载均衡,即根据IP、PORT来做负载均衡。而很多应用都是在7层做均衡更为合理,比如根据主机名、URI、请求......
  • 《分布式技术原理与算法解析》学习笔记Day05
    分布式共识什么是分布式共识?分布式共识就是在多个节点均可独自操作或记录的情况下,使得所有节点针对某个状态达成一致的过程。有哪些常见的分布式共识算法?一般有3种分布......
  • MongoDB 笔记
    title:MongoDB笔记date:2023-02-0311:13:35tags:-MongoDB1、MongoDB相关概念库<DataBase>mongodb中的库就类似于传统关系型数据库中库的概念,用来通过不同库......
  • 离线地图的开发笔记(一)
    最近做一个项目,用到离线谷歌地图的开发,而现在谷歌地图在中国的发展不是很完美,导致项目的定项迟迟不能决定。后来制作了一个地图插件mymapw.ocx,完美地解决了Winform窗体里......
  • 算法学习笔记(15): Trie(字典树)
    Trie树Trie(字典树)是一种用于实现字符串检索的多叉树。Trie的每一个节点都可以通过c转移到下一层的一个节点。我们可以看作可以通过某个字符转移到下一个字符串状态,直......
  • MongoDB学习笔记二(插入、更新)
    1、插入 runCommand insert:后面写集合名称ordered:可选,布尔值。如果true,则当插入文档失败时,返回而不插入inserts数组中列出的任何剩余文档。如果false,则当插入一个文......
  • 学习笔记(ResNet)
    1、介绍ResNet,ResNetV2,ResNeXt模型,权值由ImageNet训练而来。ImageNet数据是CV领域非常出名的数据集,ISLVRC竞赛使用的数据集是轻量版的ImageNet数据集。ISL......
  • pytorch学习笔记2
    pytorch学习笔记2   RNN结构图pytorch保存模型方法Pytorch有两种保存模型的方式,都是通过调用pickle序列化方法实现的。第一种方法只保存模型参数。第二种方法......
  • 读Java实战(第二版)笔记04_用流收集数据
    1. 方便程序员和可读性是头等大事!1.1. 函数式API设计更易复合和重用2. 归约和汇总为一个值2.1. counting()2.1.1. 计数2.2. maxBy2.2.1. 查找流中的最大值2......
  • jenkins学习笔记之一:流水线基础语法
    一、Pipeline概念1node/agent(节点)节点是一个机器,可以是Jenkins的master节点也可以是slave节点。通过node指定当前job运行的机器(这个是脚本式语法)。参数:.any在任......