鱼C论坛

 找回密码
 立即注册
查看: 2658|回复: 4

递归函数执行顺序

[复制链接]
发表于 2014-8-12 13:14:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>void updown (int);int main(void){        updown(1);        }
void updown (int n){        printf("%d,%p\n",n,&n);        if(n<4)                updown(n+1);printf("%d,%p\n",n,&n);/*这句话打印结果为什么是4,3,2,1的顺序*/}为什么执行后的结果是
1  0018FEF4
2  0018FE9C
3  0018FE44
4  0018FEEC
4  0018FEEC
3  0018FE44
2  0018FE9C
1  0018FEF4


1,2,3,4的顺序我明白,但是不知道为什么又有4,3,2,1的输出,我以为只会输出1,2,3,4.


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-12 13:22:21 | 显示全部楼层
递归是 一次次的调用自己 然后 最后的调用的 第一个结束 然后 依次这样,。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-12 14:11:22 | 显示全部楼层
我知道是一次次的调用自己,为什么调用完成后会把之前调用时产生的N值都打印出来,为什么不是打印到1,2,3,4,4,就结束了,还有3,2,1的打印呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-12 14:37:25 | 显示全部楼层
当打印到1,2,3,4时第4次调用的updown()先退出打印4,此时先前3次调用updown()还未退出,仍在栈中,然后按后进先出依次退出打印3,2,,1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-12 15:47:48 | 显示全部楼层
谢谢回复,懂了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-30 03:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表