C语言之递归函数return问题

本文深入探讨了C语言中递归函数的运行机制,通过具体实例解析递归调用过程,包括函数压栈、弹栈及return流程,帮助读者理解递归原理。

今日偶遇一道c语言递归的题,因为之前对此也是一知半解,这次仍然没有做对。认真分析后,在此做下笔记。题目如下:

右侧是输出结果。

分析: x=3,调用join(x),x++后,再次调用join(x),直到调用join(7),x++之后,x=8,所以return。但是注意此时的return是join(7),所以调用printf打印是7,然后再逐一返回。

首先先要搞清楚递归的原理
压入  第一次,第二次,第三次,第四次,第五次
第五次return后,开始弹出第四次,第四次完了,弹出第三次。。。。以此类推,则打印出7654.

另外主函数定义x=3,经过join递归之后,由于操作的不是同一栈,即不是同一地址,所以在main函数中x的值并不会发生变化,仍为3.

另有关于递归函数return的问题可以参考https://blog.youkuaiyun.com/thecape/article/details/82464598

里面有两个例子不错,帮助理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值