一个简单但易出错的递归例子
来源于C语言深度剖析
函数递归
void fun(int i)
{
if(i>0)
{
fun(i/2);
}
printf(“%d\n”,i);
}
int main()
{
fun(10);
rerurn 0;
}
输出结果:0 1 2 5 10
理解:
printf("%d\n",i);语句是 fun 函数的一部分,肯定执行一次 fun 函数, 就要打印一行。展开过程如下:
void fun(inti)
{
if (i>0)
{
//fun(i/2);
if(i/2>0)
{
if(i/4>0)
{
…
}
printf("%d\n",i/4);
}
printf("%d\n",i/2);
}
printf("%d\n",i);
}