您的位置:首页 > 职场人生

两道简单面试题的经典解法

2008-10-05 12:12 363 查看
 1) 写一个函数计算当参数为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;
}

解法二:
long result( long n )
{
return -((n-1)>>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!

定义一个二维数组 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][i];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试 float 编程