xyjzsh

[算法题]输出从1到1000的数[转载]

有这样一个面试题——请把从1到1000的数打印出来,但你不能使用任何的循环语句或是条件语句。更不能写1000个printf或是cout用C/C++语言

个人比较赞赏的思路是下面两个:

1. 函数指针数组结合n/1000的结果作为数组的index。

 1void yesprint(int i);
 2void noprint(int i);
 3 
 4typedef void(*fnPtr)(int);
 5fnPtr dispatch[] = { yesprint, noprint };
 6 
 7void yesprint(int i) {
 8    printf("%d\n", i);
 9    dispatch[i / 1000](i + 1);
10}

11 
12void noprint(int i) /* do nothing. */ }
13 
14int main() {
15      yesprint(1);
16}

17

2. 构造函数结合静态变量结合数组。

 1 class Printer
 2 {
 3 public:
 4     Printer() { static unsigned i=1; cout << i++ << endl;; }
 5  
 6 };
 7  
 8 int main()
 9 {
10     Printer p[1000];
11 }
12 

posted on 2011-01-17 10:30 呆人 阅读(353) 评论(0)  编辑 收藏 引用 所属分类: 算法


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜