递归剖析
来源:互联网 发布:修改苹果手机型号软件 编辑:程序博客网 时间:2024/06/03 18:18
C语言的函数调用可以在main()函数中进行,也可以它本身调用自己,这种调用方式就是递归。先看段代码:
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); /* #1 */ if (n < 4) up_and_down(n+1);//递归调用 printf("LEVEL %d: n 的地址 %p\n", n, &n); /* #2 */ }
/* 递归:送出去,返回来 */
所谓递归,顾名思义就是送出去(递),返回来(归),上面递归调用过程中:#1是完成“递”的过程,即从第一层执行到第四层,打印出:
printf("Level %d: n 的地址 %p\n", n, &n); /* #1 */
然后#2是完成了“归”的过程,即从第四层返回第一层,也就是说要返回到n=1的初始值,因为调用函数的初始值本来就是1。打印出:
printf("LEVEL %d: n 的地址 %p\n", n, &n); /* #2 */在调用过程中n的值从1一直变到4,然后又从4变到1。总的来说就是位于递归调用前的语句顺序执行,位于递归调用函数之后的语句逆向执行递归调用之前的语句。至此,整个递归调用的过程就结束了。值得注意的是变量n其实是代表了四个不同的变量,其地址在发生着变化,这点从打印出来n的地址就可以看出。
递归调用的类似于循环的作用,它的好处是省去循环的麻烦,但可以实现循环的功能。
附打印结果如下:
0 0
- 递归剖析
- 递归剖析
- 递归方法剖析
- 递归剖析及应用
- 递归问题剖析
- ActionFilter递归链剖析
- 剖析递归求二叉树高
- 递归之美 - Loki库TypeList源码剖析
- 递归之美 - Loki库TypeList源码剖析
- 递归之美 - Loki库TypeList源码剖析
- C编译器剖析_1.1_ 语言、文法与递归
- 汉诺塔的原理剖析以及递归的解决办法
- C编译器剖析_1.1_ 语言、文法与递归
- 【算法数据结构Java实现】递归的简单剖析及时间复杂度计算
- 【剑指offer】斐波那契数列--递归及循环剖析
- 递归
- 递归
- 递归
- QProgressBar(进度条)的使用
- window 8.1版本安装CUDA8.0
- 安装第三方库出现 Python version 2.7 required, which was not found in the registry
- 什么是Ad-hoc Query
- Android SDK上手指南:用户界面设计
- 递归剖析
- delphi fmx idhttp post 案列,android测试通过
- 网络游戏服务器之 日志系统
- Unlabele的一些使用
- session和cookie的理解:
- Android 中算法问题
- Java让线程执行完后再return的方法
- linux指令 -- pwd
- NFC问题分析之死锁引起的ANR