中兴上午面试题目

qingerzheng 2008-11-03 11:42:34
int f2(int *x);

int f1(int *x)
{
return f2(x)+f2(x);
}

int f2(int *x)
{
return 2*f1(x);
}

f1和f2函数有什么区别?
...全文
721 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
wendymax 2008-11-10
  • 打赏
  • 举报
回复
o o
xianyuxiaoqiang 2008-11-10
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 WHHY 的回复:]
f1 的写法是错误的,这种函数的行为是未定义的.
f2 的写法可以工作,但是(重点在下面,呵呵)
中兴的编程规范要求不能写递归函数的,因为有造成堆栈溢出的潜在危害.
所以遇到这样的问题,你把面试官臭骂一顿,你就肯定可以进中兴了,而且属于高工资的那一种.
[/Quote]
妙啊。面试不同笔试,考的往往是你答非所问的能力……
ttlyfast 2008-11-10
  • 打赏
  • 举报
回复
无聊哈,酸哈
ngf318 2008-11-10
  • 打赏
  • 举报
回复
这个题目有点奇怪的
SenerityChzr 2008-11-10
  • 打赏
  • 举报
回复
中兴要求不能使用递归???
LiTuX 2008-11-10
  • 打赏
  • 举报
回复
死掉了……
zsl6658 2008-11-09
  • 打赏
  • 举报
回复
现在招聘的变态比较多!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
liuborama 2008-11-09
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 WHHY 的回复:]
f1 的写法是错误的,这种函数的行为是未定义的.
f2 的写法可以工作,但是(重点在下面,呵呵)
中兴的编程规范要求不能写递归函数的,因为有造成堆栈溢出的潜在危害.
所以遇到这样的问题,你把面试官臭骂一顿,你就肯定可以进中兴了,而且属于高工资的那一种.
[/Quote]
肯定是中兴的,有才。。
Big鹏 2008-11-09
  • 打赏
  • 举报
回复


结果有可能不一样。
f2(x)+f2(x);会对f2(x)进行两次求值,由于是指针传入,第一次求值后如果x被修改了,那么第二次求值的结果就会和第一次不同。
2*f1(x);只会对f1(x)进行一次求值。

qq675927952 2008-11-09
  • 打赏
  • 举报
回复
呵呵
freesky_zhang 2008-11-09
  • 打赏
  • 举报
回复
从计算机指令角度说;
f1 = f2 + f2;
f2 = 2f1;
now:
f1=f2+f2=4f1 是错的
f1=f2更是错的。
计算机不是数学代数式推理,是数学逻辑来的

个人看法,如果有误,请原谅我的无知。
--上帝会原谅我的无知,因为我是上帝造的---
freesky_zhang 2008-11-09
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 leank 的回复:]
这个比较有意思啊,哈哈。

f1 = f2 + f2;
f2 = 2f1;
所以f1 == f2 == 0;
但是电脑它不会算,哈哈哈。
[/Quote]
对吗?f1=f2+f2=2f1+2f1=4f1,电脑肯定不会算啦。。人多算不好。。

个人认为这题1、是考参数传递,进而求值过程中参数有可能被重新赋值,造成程序问题。
2、也可能考递归问题,由于函数间的递归调用会产生太多意外,所以一般做法是用迭代替代递归
不可能是考效率问题,如果是那样的话可以这样出题:
int f3(int x);

int f1(int x)
{
return f3(x)+f3(x);
}

int f2(int x)
{
return 2*f3(x);
}

个人看法,如果有误,请原谅我的无知。
--上帝会原谅我的无知,因为我是上帝造的---
marsara 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 oria2006 的回复:]
不知道,出这题的目的在哪,在main()中,不管用谁堆栈都会溢出的
只能说楼上的说的对,只是能对比谁的效率更高而已
[/Quote]

同意,题目没完全说清楚咯,个人觉得题目应该是问执行效率的问题.
如果是这样的话,那位操作像左移<<或右移>>执行的要比加法要快些的
沉浮之夜 2008-11-06
  • 打赏
  • 举报
回复


引用 26 楼 WHHY 的回复:
f1 的写法是错误的,这种函数的行为是未定义的.
f2 的写法可以工作,但是(重点在下面,呵呵)
中兴的编程规范要求不能写递归函数的,因为有造成堆栈溢出的潜在危害.
所以遇到这样的问题,你把面试官臭骂一顿,你就肯定可以进中兴了,而且属于高工资的那一种.

同意...........
leank 2008-11-06
  • 打赏
  • 举报
回复
同27楼^_^

[Quote=引用 26 楼 WHHY 的回复:]
f1 的写法是错误的,这种函数的行为是未定义的.
f2 的写法可以工作,但是(重点在下面,呵呵)
中兴的编程规范要求不能写递归函数的,因为有造成堆栈溢出的潜在危害.
所以遇到这样的问题,你把面试官臭骂一顿,你就肯定可以进中兴了,而且属于高工资的那一种.
[/Quote]
hangweijin 2008-11-04
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 kevlin 的回复:]
结果有可能不一样。
f2(x)+f2(x);会对f2(x)进行两次求值,由于是指针传入,第一次求值后如果x被修改了,那么第二次求值的结果就会和第一次不同。
2*f1(x);只会对f1(x)进行一次求值。
[/Quote]
正解,如果f()会对引用的x修改的话,那么会对又一次的有影响


表直接拿这个代码做实验,会死掉。出题的意图只是判断引用表量的问题
太乙 2008-11-04
  • 打赏
  • 举报
回复
heh ,jf~~~~~
hzc191025 2008-11-04
  • 打赏
  • 举报
回复
mark!
pingzi_1119 2008-11-04
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 kevlin 的回复:]
+运算符的两个参数是有求值顺序的,所以f2(x)+f2(x);会对f2(x)进行两次求值。
不过由于X是以指针方式传入的,有可能再第一次求值时被修改了,从而第二次求值时参数也发生了变化
[/Quote]
貌似这个有理
雷少爷爷 2008-11-04
  • 打赏
  • 举报
回复
up
加载更多回复(23)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧