前几天看到一篇文章,有一小标题是用数学方法提高程序效率,例题为求1+2+.......+100和。
猛地记起毕业找工作时,碰上这么道面试题,当时我以为面试官傻×,现在才知道我是傻×。
最普通的方法 a:
int i,j;
for(i=1;i<=100;i++)
{
j+=i;
}
运用数学方法 b:
int i;
i = (100*(1+100))/2;
方法a用了100赋值,100判断,200加法;
方法b只用1次乘法,一次加法,一次除法;
原文作者到此为止。
仔细端详后,衍出方法 c:
/*100=64+32+4; “ + ”优先级高于“<<”*/
int i;
i = ( ( (100+1)<<6 ) + ( (100+1)<<5 ) + ( (100+1)<<2 ) ) >> 1;
每念及此,以头抢地...