欢迎来到天天文库
浏览记录
ID:57408366
大小:115.50 KB
页数:8页
时间:2020-08-16
《学C不得不看的一篇文章.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、学C++不得不看的一篇文章————————————————————————————————作者:————————————————————————————————日期: (由于具体面试的题目比较烦琐,我将其核心思想提取出来分解成了两个独立的简单的问题,有可能问题分解的不当,请大家见谅,实际面试了一个的问题但比其复杂很多,而且涉及一些高等数学变换) 1)写一个函数计算当参数为n(n很大)时的值1-2+3-4+5-6+7......+n 哼,我的心里冷笑一声!没想到这么简单,我有点紧张的心情顿时放松起来! 于是很快我给出我的解法: longfn(longn) {
2、longtemp=0; inti,flag=1; if(n<=0) { printf("error:nmust>0); exit(1); } for(i=1;i<=n;i++) { temp=temp+flag*i; flag=(-1)*flag; } returntemp; } 搞定!当我用期待的目光看着面试官的时候,他微笑着跟我说,执行结果肯定是没有问题!但当n很大的时候我这个程序执行效率很低,在嵌入式系统的开发中,程序的运行效率很重要,能让CPU少执行一条指令都是好的,他让我看看这个程序还有什么可以修改的地方,把程序优化一下!听了这些话,
3、我的心情当时变的有点沉重,没想到他的要求很严格,之后我对程序进行了严格的分析,给出了改进了的方案! longfn(longn) { longtemp=0; intj=1,i=1,flag=1; if(n<=0) { printf("error:nmust>0); exit(1); } while(j<=n) { temp=temp+i; i=-i; i>0?i++:i--; j++; } returntemp; } 虽然我不敢保证我这个算法是最优的,但是比起上一个程序,我将所有涉及到乘法指令的语句改为执行加法指令,既达到要题目的要求而
4、且运算时间上缩短了很多!而代价仅仅是增加了一个整型变量!但是我现在的信心已经受了一点打击,我将信将疑的看者面试官,他还是微笑着跟我说:“不错,这个程序确实在效率上有的很大的提高!”我心里一阵暗喜!但他接着说这个程序仍然不能达到他的要求,要我给出更优的方案!天啊!还有优化!我当时真的有点崩溃了,想了一会后,我请求他给出他的方案!然后他很爽快的给出了他的程序! longfn(longn) { if(n<=0) { printf("error:nmust>0); exit(1); } if(0==n%2) return(n/2)*(-1); else re
5、turn(n/2)*(-1)+n; } 搞笑,当时我目瞪口呆,没想到他是这个意思,这么简单的代码我真的不会写吗,但是我为什么没有往那方面上想呢!他说的没有错,在n很大很大的时候这三个程序运行时间的差别简直是天壤之别!当我刚想开口说点什么的时候,他却先开口了:“不要认为CPU运算速度快就把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做,因为CPU是为用户服务的,不是为我们程序员服务的!”多么精辟的语言,我已经不想再说什么了!接着是第二个问题: 2).他要求我用一种技巧性的编程方法来用一个函数实现两个函数的功能n为如:fn1(n)=n
6、/2!+n/3!+n/4!+n/5!+n/6! fn2(n)=n/5!+n/6!+n/7!+n/8!+n/9!现在用一个函数fn(intn,intflag)实现,当flag为0时,实现fn1功能,如果flag为1时实现fn2功能!他的要求还是效率,效率,效率!说实在话,如果我心情好的话我应该能给出一种比较好的算法,但我那时真的没有什么心思再想了,我在纸上胡乱画了一些诸如6!=6*5!的公式后直截了当的跟他说要他给出他的答案!面试官也没有说什么,给出了他的思路: 定义一个二维数组floatt[2][5]存入{{2!,3!,4!,5!,6!},{5!,6!,7!,8!,9
7、!}}然后给出一个循环: for(i=0;i<6;i++) { temp=temp+n/t[flag]; } 最后得到计算值!呵呵,典型的空间换时间的算法! 这些总共花了50分钟的时间,还有十分钟我就跟他很随意的聊聊天,聊了一些编程以及生活的问题,那时的我已经很放松了,因为我知道这次面试结果只有一个:失败。5:30的时候面试官要我等通知,于是我离开了他们公司。这就是面试的整个经过! 2.由面试想到的 真的是很失败啊!我记得那天下好大的雨,气温也很低,我边走边想,从5:30一直走到7:30,全身都湿透了,又冷又饿
此文档下载收益归作者所有