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.csdn.net/thecape/article/details/82464598

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

发布了3 篇原创文章 · 获赞 5 · 访问量 2255

猜你喜欢

转载自blog.csdn.net/weixin_41866037/article/details/94870185
今日推荐