C递归分析

#include<stdio.h>
void up_and_down(int);//事先告知编译器该函数存在
int main(void)
{
    up_and_down(1);
    return 0;
}
void up_and_down(int n)
{
    printf("level:%d n的地址是:%p\n",n,&n);
    if(n<4)//1,2,3
    up_and_down(n+1);
    printf("level:%d n的地址是:%p\n",n,&n);
}

从gdb的图中可以看出,eax大于0x3才结束递归,否则连续调用自己

下图较好的揭示递归的过程,ret几次up_and_down,后会返回main函数

posted @ 2020-07-19 17:54  zer0_1s  阅读(189)  评论(0)    收藏  举报