循环语句 for

循环语句 for

​ 循环语句的一种

语法:

​ for (初始变量; 条件判断; 修改初始值) { 代码段 }

原始形态:

​ 初始变量

​ for (条件判断) {

​ 修改初始值

​ }

代码


console.log('start')
   for (var n = 1; n <= 20; n++) {
      // 在这个 {} 内只需要书写重复执行的代码即可, 不需要考虑修改初始值的问题
      console.log('我执行了', n)
    }
    console.log('end')

练习

练习1:寻找三次自幂数(水仙花数)

三次自幂数:

(1) 保证是一个 三位数

(2) 数字每一位的 三次幂之和 和 这个数字 相等

 // 步骤1: 拿到 所有三位数
     for (var i = 100; i <= 999; i++) {
    //   // 步骤2: 提取出每一位的数字
    //   // 2-1. 提取百位数字
       var a = parseInt(i / 100)
    //   // 2-2. 提取十位数字
       var b = parseInt(i % 100 / 10)
    //   // 2-3. 提取各位数字
       var c = i % 10

    //   // 步骤3: 开始判断
    //   // 取幂运算符 **
    //   // 底数 ** 指数
       if (a ** 3 + b ** 3 + c ** 3 === i) console.log(i + ' 是三次自幂数')
     }

练习2:在页面上输出1000 ~ 2000 之间的所有闰年,四个一换行

 // 步骤1: 拿到 1000 ~ 2000 之间 所有的闰年在页面上输出
    // 步骤2: 准备一个计数器, 每输出一个计数器++
    // 准备一个计数器变量
     var total = 0
    // // 书写步长的时候 +4
     for (var i = 1000; i <= 2000; i += 4) {
    //   // 判断是否是闰年
    //   // 所有的 i 都必然是 4 的倍数
       if (i % 100 !== 0 || i % 400 === 0) {
    //     // 页面输出
         document.write(i + ' ')
    //     // 每输入一个, 计数器++
         total++
    //     // 当计数器到达 4 8 12 ... 需要输出一个换行
         total % 4 === 0 && document.write('<br>')
      }
     }

     console.log(total)

练习3:求最大公约数

//方案1
var max = 18
    var min = 12
    // 我只要提前准备一个变量, 接受
    var res
    // 循环
     for (var i = 1; i <= min; i++) {
    //   // 开始判断
       if (max % i === 0 && min % i === 0) {
          console.log(i)
    //     // 找到一个公约数赋值一次
         res = i
    //   }
    // }
//方案2
    // 倒着循环
    for (var i = min; i >= 1; i--) {
      console.log(i)
      // 开始判断
      if (max % i === 0 && min % i === 0) {
        res = i
        // 因为是从大向小查找, 找到的第一个公约数就是最大公约数
        // 只要找到一个就可以直接结束循环了
        break
      }
    }

    console.log(res)

最大公约数, 辗转相除法

逻辑: 两个数字相除, 如果可以整除, 相对小的数字就是最大公约数

​ (1) 当不能整除的时候交换

​ (2) 把小的数字变成大的, 用原先两个数字的余数代替小的数字

​ (3) 重复以上步骤

示例: 18 和 12

​ max = 18, min = 12

​ 1. max % min 不能整除

​ (1)进行替换

​ (2) max = 12

​ (3) min = 6

​ 2. max % min 能整除

​ 此时 6 就是 18 和 12 的最大公约数

示例: 27 和 19

​ max = 27, min = 19

​ 1. max % min 不能整除

​ (1) max = 19

​ (2) min = 8

​ 2. max % min 不能整除

​ (1) max = 8

​ (2) min = 3

​ 3. max % min 不能整除

​ (1) max = 3

​ (2) min = 2

​ 4. max % min 不能整除

​ (1) max = 2

​ (2) min = 1

​ 5. max % min 整除

​ 1 就是 27 和 19 的最大公约数

代码:

​ 1. 当 max 和 min 取余不为 0 的时候

​ 执行一段代码(重复执行)

​ 2. 当 max 和 min 取余为 0 的时候

​ 结束循环

var max = 27
var min = 19

    // // 开启循环
     while (max % min !== 0) {
    //   // 执行一段代码
    //   // max 和 min 的重新赋值
    //   // 准备临时变量保存两个数字的余数
       var tmp = max % min
    //   // 把 min 的值赋值给 max
       max = min
    //   // 把 临时变量 的值赋值给 min
       min = tmp
     }

    // // 代码来到这里, 说明 max % min === 0 为 true
     console.log(min + ' 就是最大公约数')

最小公倍数

分析: 10 和 15 的最小公倍数

​ 1. 公倍数 30 60 90 120 150 …

​ 2. 最小公倍数 30

​ 3. 最小公倍数取值范围:

​ 4. 最小就是 相对大的那个数字

​ 5. 最大就是 两数乘积

​ 6. 步长就是 相对大的那个数字

 var min = 10
    var max = 15
    // 准备一个变量接受结果
    var res = 0
    for (var i = max; i <= min * max; i += max) {
      // 判断是不是公倍数就可以了
      // 因为循环的步长就是 max, 所以这里得到的所有的 i 都是 max 的倍数
      // 只要这个数字同时还是 min 的倍数, 那么就是公倍数了
      if (i % min === 0) {
        res = i
        // 又因为我们是从小到大循环的, 那么找到的第一个就是最小公倍数
        break
      }
    }
    console.log(min + ' 和 '+ max + ' 的最小公倍数就是 : ' + res)
上一篇:前端进阶Vue框架-----组件生命周期


下一篇:学习Nginx