文章目录
1. 使用查找表代替分支结构
对于运算结果是有限可能的,设置查找表,特别是在循环体内,避免重复计算:
例如,整数的阶乘,在整数的有效范围内,只有如下可能:
const int FactorialTable[13] = {1, 1, 2, 6, 24, 120, 720,
5040, 40320, 362880, 3628800, 39916800, 479001600};
用这种查找表就不用递归计算 n!=n*(n-1)*(n-2)
2. 简化边界检查判断条件
if(index<0||index>limit) …;
可以改为一句话
if((unsigned int)index>limit)
…; // 类型转换不花费代价
对于特定区间的判断:
const int min = 100, max = 110; int i;
...
if (i >= min && i <= max) { ...}
可以改为:
if((unsigned int)(i-min)>(unsig