循环用法

for 循环

使用模板:

for (1️; 2; 3) {
  // 这里写循环体内容
}

两个 ; 号空出三个空位,每个空位作用如下:

  1. 初始化一个「循环变量」,用来控制循环进行
  2. 写明进入循环的控制条件
  3. 改变控制「循环变量」

一些死循环的例子:

// i 没变化,缺少 3 - 改变控制「循环变量」
for (int i = 1; i <= 10; ) {
  
}

// i 错误改变,1->0->-1。。。。
for (int i = 1; i <= 10; i--) {
  
}

// 2 - 判断条件没有写,没有写默认为真
for (int i = 1; ;i++) {
}

例题:

  1. 小硬壳数数1
  2. 小硬壳数数2

注意

for 迭代遍历的过程中,可以获取到一段区间里面的每一个整数。

由此延伸出来一些题目:

  1. 判断素数
  2. 判断因数

这些题目,都需要我们从头到尾遍历里面的每一个数字,尝试找到答案。

流程控制

用代码语言来说明计算过程,让计算机自动按照我们设计好过程执行。

所以其中需要:

  1. 分支结构 -- 用来筛选符合条件的数字或者控制当前应该进入哪部分运算
  2. 循环结构 -- 验证性的计算(当前)

计算模型

三步走:输入 -- 计算 -- 输出

枚举思想初涉

枚举:按照一定次序列,不重复不遗漏地逐个尝试。

关键在于:

  1. 选取什么数据进行枚举
  2. 枚举的范围是什么
  3. 如何进行正确性判断

例如:判断素数 xx 的过程中,需要去计算因数个数,需要想明白因数的范围:[1,2,3,4,5,,x][1,2,3,4,5,\cdots,x],里面每一个都可能是因数。

所以,学习循环结构,对区间内每个数字都进行相同的判断——是否能被整除。

例如:找k幸运数之和,需要去找到所有的满足条件的幸运数,需要想明白范围 [L,L+1,L+2,,R][L, L+1, L+2, \cdots, R],对里面的每一个数字,都重复进行判断,如果符合条件,累加起来。