递归介绍
Posted 薰衣草
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归介绍相关的知识,希望对你有一定的参考价值。
递归函数:调用自身的函数。在函数体内部直接或间接地调用自身。
递归函数的理解:
1.递归其实就是把问题传递下去,直到找到某个确切的结果后,再一步一步回归初始问题本身的过程。
2.举例:我想知道张三的身高,张三没直接告诉我他多高,直说比张四高1cm;我只好去问张四,张四说比张五高1cm;张五比张六高1cm;我一直问下去,张七,张八,张九,终于知道了张十是170cm。这个过程就是把问题传递下去的过程!并找到了一个结果,张十是170cm。
3.那么我最初的问题,是想知道张三身高,需要再把问题回归,张十。。。到张三。
递归机制:
1.调用自身,相同的处理逻辑。
但是起点或者状态不同。问的都是年龄(逻辑),问的是不同的人(起点、状态不同)。
2.独立机制。函数之间需要独立,不能嵌套,导致不能到达出口。就像我问张三年龄,张三说比张四大一岁,张四不能说比张三小一岁,这样就会陷入死循环,不能到达出口。
虽然递归函数执行的代码一样。
3.需要一个出口。
递归优缺点:
1.简化程序设计,提高易读性。
2.递归增加了系统开销。时间上,执行调用与返回的额外工作要占用CPU时间。空间上,随着每递归一次,栈内存就多占用一截。
其实每个递归都可以用for循环实现,可以减少时间复杂度。
递归构成:
1.需要有相同的处理逻辑。
2.递归函数的调用。
3.需要有函数结束语句。递归出口。
4条件判断
选择继续自调用还是结束语句。
5.递归节点需要向结束条件靠近,并最终达到结束条件
以上是关于递归介绍的主要内容,如果未能解决你的问题,请参考以下文章
创建一个叫做People的类: 属性:姓名年龄性别身高 行为:说话计算加法改名 编写能为所有属性赋值的构造方法; 创建主类: 创建一个对象:名叫“张三”,性别“男”,年龄18岁,身高1
创建一个叫做People的类: 属性:姓名年龄性别身高 行为:说话计算加法改名 编写能为所有属性赋值的构造方法; 创建主类: 创建一个对象:名叫“张三”,性别“男”,年龄18岁,