堆栈函数调用问题
发布时间:2020-12-16 03:37:28 所属栏目:百科 来源:网络整理
导读:我有一个名为fun1()的函数,用于递归.我很困惑第一次打电话给这个有趣的( – n);.它会做什么以及每个函数完成后我的堆栈如何弹出我的函数? void fun(int n){ if(n0) { fun(--n); printf("%d",n); fun(--n); }} 我的主要功能如下: int a; a=3; fun(a); 我想
我有一个名为fun1()的函数,用于递归.我很困惑第一次打电话给这个有趣的( – n);.它会做什么以及每个函数完成后我的堆栈如何弹出我的函数?
void fun(int n) { if(n>0) { fun(--n); printf("%d",n); fun(--n); } } 我的主要功能如下: int a; a=3; fun(a); 我想知道执行的顺序以及我的堆栈在第一个函数( – n)的函数调用之前,期间和之后将包含的内容. 解决方法
您的输出将为0,然后是1,然后是2,然后是0.
>最初用3调用 您没有看到的是中间调用.这是完整输出(在n> 0部分之前): Fun call before n > 0; n = 3 Fun call before n > 0; n = 2 Fun call before n > 0; n = 1 Fun call before n > 0; n = 0 0 Fun call before n > 0; n = -1 1 Fun call before n > 0; n = 0 2 Fun call before n > 0; n = 1 Fun call before n > 0; n = 0 0 Fun call before n > 0; n = -1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |