两道简单面试题的经典解法
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];
}
解法一:
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];
}
相关文章推荐
- 【白话经典算法系列之十一】一道有趣的GOOGLE面试题 --【解法2】
- 【白话经典算法系列之十一】一道有趣的GOOGLE面试题 --【解法2】 .
- 李洪强iOS经典面试题36-简单介绍 ARC 以及 ARC 实现的原理
- 两道简单的面试题
- 两道经典前端面试题(闭包、请求响应过程)
- 经典面试题---求两个数字的较大值的另类解法
- 【白话经典算法系列之十一】一道有趣的GOOGLE面试题 --【解法2】
- 数对变量就能做对题,链表类面试题的经典解法(1)-- 两个变量
- 李洪强iOS经典面试题32-简单介绍 ARC 以及 ARC 实现的原理
- 【白话经典算法系列之十一】一道有趣的GOOGLE面试题 --【解法2】
- 数对变量就能做对题,链表类面试题的经典解法(2)-- 基础题
- 两个经典面试题的解法
- 字符串操作,翻转句子中单词的顺序--经典面试题两种解法
- 经典面试题之复杂链表复制的简单实现
- 新的两道面试题(简单)
- 白话经典算法系列之十一 一道有趣的GOOGLE面试题 --【解法2】
- 一道经典面试题的不同解法
- setTimeout 循环闭包的经典面试题 解法与探究
- 白话经典算法系列之十一 一道有趣的GOOGLE面试题 【解法2】
- 两道经典的java面试题