免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: weckay
打印 上一主题 下一主题

[函数] EMC小有难度的笔试,撰写仅有一行的语句的函数??? [复制链接]

论坛徽章:
0
71 [报告]
发表于 2007-04-04 18:51 |只看该作者
原帖由 openq 于 2007-4-4 17:52 发表
zhe jiu shi xian zai ruan jian hang ye de yi ge wu qu,hao xiang zhi you dai ma xie de yue qiao miao jiu yue li hai,ke shi ta you mei you xiang guo zhe yang de dai ma hui gei hou qi de ruan jian wei ...


不能用"难以维护"来为自己对语言的不熟悉找借口. 这题作为最后一题的确值得商榷.
这题从某种意义上考察了思维方式, 相信, 凡是想到递归的人, 都已经算成功一半了^_^

相比, 我觉得很多代码, trick更多, 但是这些trick确是为了更好的开发.

论坛徽章:
0
72 [报告]
发表于 2007-04-04 23:56 |只看该作者
原帖由 Edengundam 于 2007-4-4 18:51 发表


不能用"难以维护"来为自己对语言的不熟悉找借口. 这题作为最后一题的确值得商榷.
这题从某种意义上考察了思维方式, 相信, 凡是想到递归的人, 都已经算成功一半了^_^

相比, 我觉得很多代码, tr ...

请问这位大侠,如果让你写一个的到这样结果到程序,你的首选是一半的循环,还递归。
循环实现和递归实现的效率根本就是天壤之别,程序用来完成我们给的任务的,我想这循环和递归之间的效率学过语言的人都应该很清楚。我想如果追求效率的人肯定会选择循环。

论坛徽章:
0
73 [报告]
发表于 2007-04-05 00:17 |只看该作者
原帖由 openq 于 2007-4-4 23:56 发表

请问这位大侠,如果让你写一个的到这样结果到程序,你的首选是一半的循环,还递归。
循环实现和递归实现的效率根本就是天壤之别,程序用来完成我们给的任务的,我想这循环和递归之间的效率学过语言的人都应该很 ...


那你就用循环把上面的过程实现一个看看,
到底是递归更清晰呢,还是循环更清晰.
你的上上一贴说的是清晰,上一贴说的是效率.

论坛徽章:
0
74 [报告]
发表于 2007-04-05 00:19 |只看该作者
原帖由 openq 于 2007-4-4 23:56 发表

请问这位大侠,如果让你写一个的到这样结果到程序,你的首选是一半的循环,还递归。
循环实现和递归实现的效率根本就是天壤之别,程序用来完成我们给的任务的,我想这循环和递归之间的效率学过语言的人都应该很 ...



我不是学究, 应该确信, 在一定范围内, 递归算法的简单易懂, 胜于将其转化成非递归形式.

而且转化成非递归形式, 实则是"递归". 所以说, 考察一个人能不能用正确的递归方法求出, 是有必要的. 因为很多算法是透过递归思路设计的...

我说过此题不一定很好. 我的看法是, 对语言的驾驭是必要的. 因为做大工程, 你一定会看到貌似很trick的东西, 如果不信, 你可以看看开源代码, 我相信你能清楚界定什么是好代码, 什么是差代码, 再说用 && ||的时候太多了. 我写脚本还经常用 && , ||这些操作.

至于写成什么代码, 明确说, 大部分时候, 写成递归形式, 比写成非递归形式更快, 简单. 所以考试时候, 写递归代码, 我觉得很好, 除非明确要求, 将递归转化. 当进行开发时候, 可以转化成非递归的循环形式. 并且如果知道一段代码运行概率小, 而且运行的范围较小, 写递归也没有什么问题.

这题的条件, 让我想到递归, 如果没有这些条件, 我还是想递归. 如果要我优化, 我会考虑<i, N>的取值, 决定是否修改.

[ 本帖最后由 Edengundam 于 2007-4-5 00:24 编辑 ]

论坛徽章:
0
75 [报告]
发表于 2007-04-05 00:21 |只看该作者
原帖由 飞灰橙 于 2007-4-5 00:17 发表


那你就用循环把上面的过程实现一个看看,
到底是递归更清晰呢,还是循环更清晰.
你的上上一贴说的是清晰,上一贴说的是效率.



高手还在啊...睡觉了...晚安

论坛徽章:
0
76 [报告]
发表于 2007-04-05 00:31 |只看该作者
原帖由 Edengundam 于 2007-4-5 00:21 发表



高手还在啊...睡觉了...晚安


不敢。
晚安

论坛徽章:
0
77 [报告]
发表于 2007-04-05 10:35 |只看该作者

看看我的,大家感觉怎么样?

return (i <= N) && ((printf("%d\n",i))  &&  ((i<N)  && p(i+1,N))  && (i==N || (printf("%d\n",i)))) || 1;

论坛徽章:
0
78 [报告]
发表于 2007-04-05 15:37 |只看该作者
哈哈....我也要去EMC ...

就是...差了点...得稍微修改下...

  1. [yarco@localhost ~]$ cat 1.c
  2. #include <stdio.h>

  3. int p(int f, int t);

  4. int p(int f, int t)
  5. {
  6.         return f < t ? (printf("%d\n", f++) && p(f, t)) : (printf("%d\n", t--) && p(f, t));
  7. }

  8. int main()
  9. {
  10.         p(1, 7);
  11.         return 0;
  12. }

  13. [yarco@localhost ~]$ ./1 | head -n 20
  14. 1
  15. 2
  16. 3
  17. 4
  18. 5
  19. 6
  20. 7
  21. 6
  22. 5
  23. 4
  24. 3
  25. 2
  26. 1
  27. 0
  28. -1
  29. -2
  30. -3
  31. -4
  32. -5
  33. -6
复制代码


改一下...

  1.         return f < t ? (printf("%d\n", f++) && p(f, t)) : (t > 0 && printf("%d\n", t--) && p(f, t));
复制代码

总之....总之....
偶最帅了

偶也要去EMC...偶也要去EMC...偶也要去EMC...偶也要去EMC...偶也要去EMC...偶也要去EMC...偶也要去EMC...

[ 本帖最后由 yarco3 于 2007-4-5 15:56 编辑 ]

论坛徽章:
0
79 [报告]
发表于 2007-04-05 22:45 |只看该作者
晕  肯定是递归啥

论坛徽章:
0
80 [报告]
发表于 2007-04-05 22:54 |只看该作者
飞灰橙的答案竟然无视........
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP