由一个例子引起的对递归原理的理解。

原创 2015年07月09日 13:16:06

   今天由一个例子来对递归函数执行过程进行简要的剖析。

 

   递归,所用到的底层数据结构是栈。即遵循先进后出原则,保存、读取变量。

 

  如果我们想要运用递归,必须满足两个条件:

   1,确定初始条件。确定递归何时结束。

   2,该问题能够用分治思想,将大问题分解为小问题。

 

  每次,递归调用前,现将函数变量值压入栈;递归结束后,再将变量依次弹出。

 

下面是一个例子:

程序执行过程:

 

1.执行6-15行。

第一次入栈,num=4;

...

第五次,num=0;

DOS窗口打印:5  4  3  2  1 0

 

2.当num=0,执行8行。 if num==0,DOS窗口打印:1:0。注意,在返回之前,应先将栈销毁。

 

 

3.执行16-17行,依次将num弹出栈。

2:0

:::

______

______

2:4

:::

 

4.执行第18行,返回num=4。销毁num栈。

注意,如果没有第18行,这时候返回的是一个任意值。因为,在执行第17行后,num栈元素已经全部弹出,num此时变成一个任意值。

 

调试结果如下:

 

 

 

 

一个例子看懂递归

一、为什么要搞定递归 在计算机科学与技术中,递归思想是简单而且复杂的。它可以将复杂的数学问题用简单的代码实现,但是要理解它却是需要复杂的思考。大多数算法中都巧妙的使用了,或者可以使用递归来完成,比如排...

关于如何理解递归的两则小例子

我相信对许多初学编程的同学来说,递归是一个较为抽象的概念。在刚开始学习的时候,由于没有总结出正确的理念以及方法,我也深深陷入递归的无尽循环当中。。。。 递归说白了就是无限循环,但是通过着嵌套着自身进行...

个人认为一个比较好到学习递归到例子

以前学习到时候不认真,走了弯路,内功没有练好,以至于现在学习起来有点吃力,所以转回学习基础知识,最近看了一下递归,以前感觉很简单,现在看来也不难,但是说到深刻理解,却不感大话。         在一本...
  • zyqhi
  • zyqhi
  • 2011年07月13日 10:42
  • 483

java堆排序非递归代码,无原理版,比较好理解

public class HeapOperate { /* * 建立堆时只需要保证根结点小于两个子结点或者大于两个子结点,对两个子结点大小没有要求 */ public static vo...

一个比较容易理解的归并排序--递归实现

一个归并排序的递归实现  1#include stdio.h>  2#include algorithm>  3using namespace std;  4#define MAX 100...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:由一个例子引起的对递归原理的理解。
举报原因:
原因补充:

(最多只允许输入30个字)