跳转至

for 循环

自增与自减

i++; // 自增
i--; // 子减 

i++ 与 ++i

i++; // 先把i的值给出去,自己再+1
++i; // 先自己+1,然后把+1之后的值,给出去

两者还有其他区别吗?

// 在发音上,i++更方便一些
// i++会在底层有一个自我备份的操作,但这个操作带来的效率影响,可忽略不计

for 循环

// for 循环语法格式
for (循环变量初始化; 循环条件; 每轮循环结束操作) {
    ...
    ...
}

观察循环的执行过程

for (int i = 0; i < n; i++)
    cout << i << ' ';
for (int i = 1; i <= n; i++)
    cout << i << ' ';
for (int i = 1; i <= n; i += 2)
    cout << i << ' ';

递推数列

输出等差数列

// 已知 a1 = 1, an = 15, d = 2, 不知道总共多少项
for (int i = a1; i <= an; i += d)
    cout << i << ' ';
// 已知 a1 = 1, a2 = 3, n = 5
// 分析可知 d = a2 - a1
int d = a2 - a1;
for (int i = a1, j = 1; j <= n; j++, i += d)
    cout << i << ' ';
// 在这里,j 是负责第几项的

输出等比数列

// 已知 a1 = 1, an = 1024, q = 2
for (int i = 1; i <= an; i *= q)
    cout << i << ' ';
// 已知 a1 = 1, q = 2, n = 5
for (int i = 1, j = 1; j <= n; j++, i *= q)
    cout << i << ' ';
// 在这里,j 是负责第几项的

输出斐波那契数列

// 已知斐波那契数列,1, 1, 2, 3, 5, 8,...
// 请输出斐波那契数列的第10项
int a = 1, b = 1, c;
for (int i = 3; i <= 10; i++) {
    c = a + b;
    a = b;
    b = c;
}
cout << c;

如果问,请输出斐波那契数列的第2项。

以上代码,还试用吗?如何处理呢?

// 我们可以使用if语句进行特判

// 我们也可以将 c 初始化成 1
// 即使我们没有进入到 for 循环,直接输出 c,
// 但也可以得到正确的结果