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

原创 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此时变成一个任意值。

 

调试结果如下:

 

 

 

 

对递归的理解归纳

原文链接:http://www.nowamagic.net/librarys/veda/detail/2314 /**  * 观察归纳法我们发现:递归的数学模型就是归纳法:  * 归纳法适用于把...
  • yhhwatl
  • yhhwatl
  • 2016年05月02日 23:24
  • 1111

递归的基本原理

不理解递归的可以看一看~
  • Daniel960601
  • Daniel960601
  • 2017年03月09日 20:35
  • 728

递归的一些理解

递归,简单点就是快速找到终止条件,然后由终止条件倒过来推运行过程 理论上上就是压栈和出栈的过程...
  • wordwarwordwar
  • wordwarwordwar
  • 2014年10月14日 21:47
  • 700

二叉树的递归实现理解

BinaryTree 类的代码如下: http://cslibrary.stanford.edu/110/BinaryTrees.html 重点理解: 1.理解递归方法,理解要又一个自变化的递...
  • haolongabc
  • haolongabc
  • 2012年04月03日 15:16
  • 1326

3. 深入理解递归

递归最重要的一点就是假设子问题已经解决了,现在要基于已经解决的子问题来解决当前问题。 递归之所以把问题变简单了,是因为相当于多给你了一个前提条件(尽管是假设的)。 大家都知道,...
  • DylanDong
  • DylanDong
  • 2016年11月12日 16:15
  • 753

生活中的递归?

好久没有写了,因为事情太多了。老是觉得有很多事情要做,就是不知道到底在忙什么。然而,最近看了一个故事,我觉得对我触动蛮大的,不知道自己已经想故事里面那样陷入一个递归当中了,写下来提醒大家和我自己吧!故...
  • rainsia_
  • rainsia_
  • 2006年12月21日 10:54
  • 1519

这么认识递归,你会恍然大悟!如果你已经很透彻理解递归请飘过~

递归算法概念是函数调用自己来实现的某种功能按以下方法理解递归你会恍然大悟,并且觉得递归是如此简单: 1.递归是高中数学中的数列那一章讲的内容 2.数列这章讲了一个概念叫递推公式:如果已知数列的第1...
  • baidu2030
  • baidu2030
  • 2014年11月17日 14:41
  • 1766

6年测试工作的思考 转

6年测试工作的思考  转前言        在公司已经干了6年的测试了,干测试经理也5年了。眼看就要离开奋战了6年的岗位,还真有点儿舍不得。但没办法,该离开的时候就要离开,光伤感是没有用的。正好趁此机...
  • casper_jiao
  • casper_jiao
  • 2007年03月07日 22:15
  • 3971

递归(一)几个简单的递归例子

刚接触递归的同学,可能难以理解递归,难以理解的点可能很多,例如: 1.函数为什么可以在自己的内部又调用自己呢? 2.既然可以自己调用自己,那么递归运行过程中一定回有很多层相互嵌套,到底什么时候不再嵌套...
  • ten_sory
  • ten_sory
  • 2017年03月20日 16:15
  • 3256

递归和迭代的小例子

package com.huawei.ps.mpa.service.impl; import java.util.ArrayList; import java.util.Iterator;...
  • meidibanjijian
  • meidibanjijian
  • 2012年12月27日 18:55
  • 2089
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:由一个例子引起的对递归原理的理解。
举报原因:
原因补充:

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