背景
程序的6大结构
顺序结构 ()
跳转结构 (汇编中用到,高级语言基本不用 goto )
分支结构 ( if ,switch , continue,break )
循环结构 (while for until)
封装结构 (代码块{} 函数() 接口 interface和类 class )
递归结构
递归是计算机编程中最难吃透的程序结构,是处理复杂问题必须用到的结构
因为它同时主要涉及到了 循环,封装
那如何才能学会使用递归这个工具呢?
分步骤学习,先学习封装结构,再学习循环,再学习递归
先学习封装结构
什么是封装?
封装的概念非常简单, 就是打包代码的意思,就像打包 快递包裹一样.
目前的高级语言的封装一般都分为6种:
块的封装 , 语法是: {代码}
方法的封装, 语法是: function 自定义的方法名(参数){ 代码 }
类的封装 , 语法是: class 自定义的类名{ 属性,构造函数,普通函数}
包的封装, 语法是: package 自定义的包名 包含很多的类
项目的封装, 项目文件夹 包含了项目配置文件,项目工作目录,项目说明文档等
类的封装 就是大家常常听到的java面向对象 四大特性之一的封装
再学习循环结构
什么是循环?
循环的四要素:
- 初始(对递进和递变变量进行初始化)
- 范围(防止无限死循环,明确何时中断循环,明确跳过某些参照因素)
- 递进 (初始化的变量i的累加 ,递进变量可以看成循环的参照坐标)
- 递变 (在循环过程某些变量发生了某种规律的改变, 这种规律就是封装的代码内容所表达的)
各做50道相关算法练习题,你就了解了封装和循环了
[[递归体]]
fun(参照变量,...){
参照变量的递变化(例如: ++ 或 -- )
if(条件) //递归结束条件设置
return;
处理....
fun(参照变量,...);
}
递归的特点
递归: 比循环四要素 多了一个要素
函数自己调用自己的函数
递归的实现的4特点 :
- 一定需要一个封装的函数;
- 一定需要声明递变量作为函数的入参;
- 一定存在:函数内部调用了自身函数名, 也就是进入下一层函数;
- 一定存在:当满足某种条件时,退出递归,或者跳过部分代码,进入下层函数;
递归的理解
- 在递归函数中, 在调用自身函数前,和调用自身函数后的代码意义是完全不同的.
- 递归函数 就是每一层算法的模型
- 只要要找出算法中层的边界,就可以设计出模型
这三句话需要理解, (普通初学者,没有人指导的情况下,快的也需要2个月吧!,所以别急!!)
估计做50道相似的题,你就会用了递归了