【软考】递归调用
2015-08-29 20:41
274 查看
是什么?
简单的说:递归就是在程序的运行过程中调用自己。
官方讲解:
递归调用是一种特殊的嵌套调用,是某个函数调用自己,而不是另外一个函数。递归调用一种解决方案,一种是逻辑思想,将一个大工作分为逐渐减小的小工作,比如说一个和尚要搬50块石头,他想,只要先搬走49块,那剩下的一块就能搬完了,然后考虑那49块,只要先搬走48块,那剩下的一块就能搬完了……,递归是一种思想,只不过在程序中,就是依靠函数嵌套这个特性来实现了。
什么时候用?
(1)数据的定义是按照递归定义的。
(2)问题解法按照递归算法实现。
(3)数据的结构形式是按递归定义的。
如:二叉树、广义表,由于结构的本身固有的递归特性,则他们的操作可递归的描述。
递归的小程序:
求斐波那契数列前40项和?
结果:
![](https://img-blog.csdn.net/20150829204107746)
递归调用与嵌套调用的区别:
递归调用是调用方法本身,嵌套调用是调用别的方法。
![](https://img-blog.csdn.net/20151015122739337)
![](https://img-blog.csdn.net/20151015122750735)
递归与循环的区别:
循环是指在满足条件的情况下,重复执行一段代码。而递归可以理解为重复执行一个方法。
递归和其他对比的详细讲解:点我!
简单的说:递归就是在程序的运行过程中调用自己。
官方讲解:
递归调用是一种特殊的嵌套调用,是某个函数调用自己,而不是另外一个函数。递归调用一种解决方案,一种是逻辑思想,将一个大工作分为逐渐减小的小工作,比如说一个和尚要搬50块石头,他想,只要先搬走49块,那剩下的一块就能搬完了,然后考虑那49块,只要先搬走48块,那剩下的一块就能搬完了……,递归是一种思想,只不过在程序中,就是依靠函数嵌套这个特性来实现了。
什么时候用?
(1)数据的定义是按照递归定义的。
(2)问题解法按照递归算法实现。
(3)数据的结构形式是按递归定义的。
如:二叉树、广义表,由于结构的本身固有的递归特性,则他们的操作可递归的描述。
递归的小程序:
求斐波那契数列前40项和?
<span style="font-family:KaiTi_GB2312;">public class Fab{ public static void main(String[] args){ System.out.println(f(40)); } public static int f (int n){ if (n <1) { System.out.println("dkdkdkk"); return -1; } int f1 = 1; int f2 = 1; int f =0; for(int i = 0;i<n-2 ; i++){ f = f1 + f2; f1 = f2; f2 = f; } return f ; } }</span>
结果:
递归调用与嵌套调用的区别:
递归调用是调用方法本身,嵌套调用是调用别的方法。
递归与循环的区别:
循环是指在满足条件的情况下,重复执行一段代码。而递归可以理解为重复执行一个方法。
递归和其他对比的详细讲解:点我!
相关文章推荐
- 【实例】html-canvas中实现图片的放大
- android系统service组件的线程关系
- JavaScript打开新页面的方法
- poj 1077 hdu 1043 Eight 八数码问题 DBFS(双向广度优先搜索)a*算法 康拓展开
- Permission is only granted to system apps
- 实时监听输入框值变化:oninput & onpropertychange
- 工具---定时器
- HDOJ1677(最长上升子序列个数)
- Java中Object类
- LeetCode--Remove Duplicates from Sorted List
- JQuery 自动触发事件
- 让树莓派自动上报IP地址到邮箱,二代B
- 腾讯2015春招pc客户端开发练习卷
- Struts面试题
- 【机器学习】EM算法详细推导和讲解
- UVA-1533 Moving Pegs (路径寻找问题)
- Git 服务器搭建与客户端安装
- noj 1004线性表的操作
- Struts面试题
- Android 5.1 Phone 挂断电话流程分析