且看如下2例
(1) 算出1加到100的总和。
低效:
int sum = 0;
for (int i=1; i<=100; i++)
sum += i;
高效:
int sum = ((1 + 100) * (100 - 1 + 1)) / 2; 或更精简的 int sum = (101 * 100) >> 2;
(2) 计算1加到10000,奇数和偶数的总和。
低效:
int oddSum = 0;
int evenSum = 0;
for (int i=1; i<=10000; i++)
{
if (i % 2 == 0)
evenSum += i;
else
oddSum += i;
}
高效:
int sum = (10001 * 10000) >> 2;
int evenSum = 5001 * 5000;
int oddSum = sum - evenSum;
1到10000之间的偶数总和是是2+4+6+...+10000,把它们全部除以2的话会变成1+2+3+...+5000,所以1到10000偶数的总和不就是1加到5000的两倍
---------------------------------------------
可见, 千万不要把曾经和你相伴十多年的数学课程知识给遗忘掉噢 !!