RealTek面试题
编辑: 面试啦 发布时间: 2023-09-29 06:22:30
写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7……+n ; long fn(long n) { if(n<=0) { printf(“error: n must > 0); exit(1); } if(0==n%2) return (n/2)*(-1); else return (n/2)*(-1)+n; } //******************************************************** 要求我用一种技巧性的编程方法来用一个函数实现两个函数的功能n为如: fn1(n)=n/2!+n/3!+n/4!+n/5!+n/6! fn2(n)=n/5!+n/6!+n/7!+n/8!+n/9! 现在用一个函数fn(int n,int flag)实现,当flag为0时,实现fn1功能,如果flag为1时实现fn2功能!他的要求还是效率,效率,效率!说实在话,如果我心情好的话我应该能给出一种比较好的算法,但我那时真的没有什么心思再想了,我在纸上胡乱画了一些诸如6!=6*5!的公式后直截了当的跟他说要他给出他的答案!面试官也没有说什么,给出了他的思路: 定义一个二维数组 float t[2][5]存入[2!,3!,4!,5!,6!},{5!,6!,7!,8!,9!]然后给出一个循环: for(i=0;i<6;i++) { temp=temp+n/t[flag]; } 最后得到计算值!呵呵,典型的空间换时间的算法!
词条:c面试题
面试题库导航
- C++面试题
- JAVA面试题
- Oracle面试题
- MySQL面试题
- Linux面试题
- 网络工程师面试题
- 网管面试题
- 软件工程师面试题
- PHP面试题
- .net面试题
- 软件测试面试题
- EJB面试题
- Spring面试题
- Javascript面试题
- Python面试题
- QTP面试题
- Servlet面试题
- J2EE面试题
- Database面试题
- ASP面试题
- Unix面试题
- Loadrunner面试题
- 通信面试题
- 嵌入式面试题
- Ruby面试题
- Delphi面试题
- Mobile开发面试题
- SOA面试题
- JAVA面试题面试题
- 研发工程师面试题
- 软件架构师面试题
- 系统工程师面试题
- Android面试题
- JAVA程序员
- C#面试题