手把手教你c++递归运行的机制和栈
1、鼠标双击或者右击打开桌面上DEVc++软件,让其运行起来。Dev-觊皱筠桡C++是一个电脑Windows窗口运行环境下的一款非常适合于刚开始学习艘早祓胂c++学者使用的入门级C/C++ 集成开发环境(IDE)。这款软件很自由,遵守GPL许可协议分发源代码。它大大集成了MinGW中的GCC编译器、GDB调试器和 AStyle格式整理器等众多自由软件。非常的试用,而且界面分类清楚,具有很强大的功能。
2、点开文件,选择新建源代码,这时候新建的代码文本还是没有命名的,是一个空命名的文件,下面我们可以通过界面左上角的文件选项,选择另存为,可以存在电脑里任何一个盘,小编为了下次可以更好的找到文件,我存在电脑的桌面上。当然你们可以选择任何一个盘,根据各人所需
3、递归的优缺点 优点:直接、算法程序结构清晰、思路明了。 缺点:递归的执行过程却很让人费解。 工作栈 递归函数的每一次调用都要把分配的相应空间保存起来。 系统内部设置一个栈,用于存放每次函数调用与返回所需的各种数 据,其中主要包括函数的调用结束的返回地址,返回值,参数和局部 变量等。
4、 递归运行过程大致如下: 1).计算当前函数的实参的值 2).分配空间,并将首地址压栈,保护现场 3).转到函数体,执行各语句,此前部分会重复发生(递归调用) 4).直到出口,从栈顶取出相应数据,包括,返回地址,返回值等等, 收回空间,恢复现场,转到上一层的调用位置继续执行本次调用未完 成的语句。
5、下面小编谈下栈的定义:栈是一种应用范围广泛的数据结构,适用于各种具有“后进先出”特性的问题 本节着重讨论与过程调用、特别是与递归这间 的关系
6、栈与过程调用考虑下述三个过程:procedureA1(…);beginprocedureA2(…);beginprocedureA3(…);begin┇┇┇r:A2(…);r1:┇t:A3(…);t1:┇end;end;end;
7、过程A1在其过程体的某一处调用过程A2,A2以在其过 程体的某一处调用过程A3,A3不调用其他过程。当过程A1执行到的r处时,它自己实际上被"挂起来,而 被调用过弛贾班隧程A2开始运行。一直等到A2执行完毕这后才 返回过程A1的r1处继续执行A1剩下部分。 在过程A2的 上述运行中,由于调用了A3,A2同样在t处"挂"起并一 直等到A3执行结束后返回t1处才能继续执行后继语句。
8、嵌套调用过程中调用关系相应的工作栈状态变化 每遇到一个过程调用便立刻将相应的返回位置(及其 它有用的信息)进栈;每当一被调用过程执行结束 时,工作栈栈顶元素下好是此过程的返回位置。