传说,18世纪末的德国,有一位名叫高斯的数学神童。他上小学的时候,老师为了让学生们安静一会儿,在黑板上写了一道题:
"请把 1 到 100 的所有整数加起来,算出结果。"
老师心想:这些小家伙肯定要一个一个加半天,我正好可以歇会儿。没想到,没过多久,小高斯就把写满答案的小石板举了起来——答案是 5050。
老师很惊讶,问他是怎麼算的。高斯说:
"我把1和100配对,2和99配对,3和98配对……每一对加起来都是101,一共有50对,所以50×101=5050。"
💡 两种解法,殊途同归
高斯用了数学巧思,但如果让计算机来算呢?它最擅长的就是"不知疲倦地重复"!
| 解法 | 思路 | 时间复杂度 | 特点 |
|---|---|---|---|
| 方法一:循环累加 | 从1加到100,一个一个加 | O(n) | 适合学习循环,通用性强 |
| 方法二:公式计算 | n×(n+1)/2 | O(1) | 更快,但只适用于等差数列 |
方法一用代码怎么写?
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum = sum + i; // 每轮把 i 加进 sum
}
// 结果:sum = 5050
方法二呢?
int n = 100;
int sum = n * (n + 1) / 2;
// 结果:sum = 5050
今天,我们就来学习"方法一"背后的核心语法 —— for 循环