今天找资料,无意发现了一个csdn bloger发布了几道MOTO的笔试题目,都是关于C语言的,看起来都很基础,但确实涵盖了C的一些精髓。现摘抄一道题目与大家分享,同时也是对自己C语言学习的一个检测吧,其中的一道题目是这样的 :
void fun(int x)
{
if(x/2>0)fun(x/2);
printf("%d",x);
}
求fun(10)的输出结果。
乍一看,还真没什么,可是这小小的题目确包含了C语言里最神奇的算法--递归。为了验证自己的想法,在VC下运行了一下,测试代码如下:
#include<stdio.h>
int main()
{
void fun(int x);
fun(10);
}
void fun(int x)
{
if(x/2>0)fun(x/2);
printf("%d/n",x);
}
结果如下:1、2、5、10
开始还以为是10、5、2、1呢,最后细想了一下的确应该是1、2、5、10。呵呵,和我犯一样错误的朋友们,可以慢慢揣摩下递归的原理。