递归的使用(图解)
来源:互联网 发布:虚拟机安装nginx 编辑:程序博客网 时间:2024/05/14 01:48
递归:”递":传递,“归”:回归。
简单的解释:方法内调用它本身。
传递和回归必须存在一个临界点:比如最内层被调用的方法内给了一个返回值,或者是最内存被调用方法结束,然后将结果返回给上一层的方法.,然后一层层结束,一层层返回。
它的使用场景,比如会用递归来解决斐波那契数列、阶乘。。的问题。
例子:给一个整数n:求1+2+3+.....+n的值
首先是执行main()方法,main()方法进栈,然后调用main()方法中的add(5)方法,add(5)方法进栈。当执行到return add(4)+5时,add(5)方法会调用add(4)方法,add(4)方法进展,然后依次递归调用,直到add(1)方法进栈为止。
当执行add(1)方法时,会首先进行判断if(n==1),然后满足条件,该方法返回一个整数 1(临界点),(这个返回值是返回给add(2)方法的),然后add(1)方法执行完毕,出栈。
此时add(2)方法接收了add(1)方法的返回值,执行add(2)方法,最后走到return add(1)+2==return 1+2 ,add(2)方法执行完毕,将返回值返回给add(3)方法,出栈。
然后依次执行add(3)、add(4)、add(5)。。依次出栈。具体步骤看下图:
add(5)方法接受到前几个递归方法执行完毕后传来的值:1+2+3+4,执行它本身,return add(4)+5==return 1+2+3+4+5,将该结果返回给main()方法,add(5)出栈。递归结束
main()方法接受到了add(5)方法返回值,15,打印输出,main()方法结束,出栈。
阅读全文
0 0
- 递归的使用(图解)
- 二叉树遍历的递归实现图解
- 图解递归调用过程(Python)
- 采用递归求数组里面求最大子序列的算法(手绘图解)
- 递归神经网络 RNN 图解
- 图解Fat jar的使用
- 图解Fat jar的使用
- 图解Fat jar的使用 .
- 图解Fat jar的使用 .
- SQL的join使用图解
- Testlink的使用及图解
- IO流_递归解决问题的思想及图解
- Spring与hibernate的整合 图解(使用MyEclipse)
- xp系统安装_ghost的使用(图解)
- 图解BCGControlBar的使用步骤(资源下载链接)
- myeclipse10中svn的安装和使用(详细图解)
- GitHub的注册与使用(详细图解)
- myeclipse10中svn的安装和使用(详细图解)
- cordova build app时候 提示没有gradle android studio
- Flex布局布局
- 16.3.1 预处理粘合剂:##运算符
- 16.3.3 条件编译
- 16.7 内联函数(inline function)
- 递归的使用(图解)
- 谷歌浏览器Chrome播放rtsp视频流解决方案
- 16.8 快速排序之qsort()函数
- slf4j-api、slf4j-log4j12以及log4j之间什么关系?
- 10.4 指针与内存
- 串口驱动程序设计
- LeetCode(22)--Generate Parentheses
- 位运算与其简单应用
- 老司机告诉你打斗牛需要注意的技巧