RealTek笔试经验

时间:2020-11-22 15:07:54 笔试经验 我要投稿

RealTek笔试经验

  写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7……+n ;

RealTek笔试经验

  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];

  }

  最后得到计算值!呵呵,典型的空间换时间的算法!

【RealTek笔试经验】相关文章:

笔试经验:笔试内容准备09-02

故宫笔试经验05-07

长虹笔试经验12-19

银监会笔试经验12-18

招商笔试经验12-18

微软笔试经验12-07

求职笔试经验12-07

苏宁笔试经验笔试写作08-31

安永笔试经验及笔试细节08-31

中兴笔试面试经验08-23