问题引出:
某位朋友写到:
21日那天我被安排在4:30面试,由一位技术人员单独给我面试,在问了一些简单的问题之后
他给我出了一道编程题目,题目是这样的:
(由于具体面试的题目比较烦琐,我将其核心思想提取出来分解成……)
1) 写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n
哼,我的心里冷笑一声!没想到这么简单,我有点紧张的心情顿时放松起来!于是很快我给出我的解法:
long fn(long n)
{
long temp=0;
int i,flag=1;
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
for(i=1;i<=n;i++)
{
temp=temp+flag*i;
flag=(-1)*flag;
}
return temp;
}
搞定!当我用期待的目光看着面试官的时候,他微笑着跟我说,执行结果肯定是没有问题!
但当n很大的时候我这个程序执行效率很低,在嵌入式系统的开发中,程序的运行效率很重
要 ,能让CPU少执行一条指令都是好的,他让我看看这个程序还有什么可以修改的地方,把程
序 优化一下!听了这些话,我的心情当时变的有点沉重,没想到他的要求很严格,之后我对
程序进行了严