栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > C++面试题库

RealTek面试题

RealTek面试题

写一个函数计算当参数为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];   }      最后得到计算值!呵呵,典型的空间换时间的算法!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/265927.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号