递归介绍

来源:互联网 发布:ichart.js下载 编辑:程序博客网 时间:2024/06/09 21:57

递归函数:调用自身的函数。在函数体内部直接或间接地调用自身。

递归函数的理解:

1.递归其实就是把问题传递下去,直到找到某个确切的结果后,再一步一步回归初始问题本身的过程。

2.举例:我想知道张三的身高,张三没直接告诉我他多高,直说比张四高1cm;我只好去问张四,张四说比张五高1cm;张五比张六高1cm;我一直问下去,张七,张八,张九,终于知道了张十是170cm。这个过程就是把问题传递下去的过程!并找到了一个结果,张十是170cm。

3.那么我最初的问题,是想知道张三身高,需要再把问题回归,张十。。。到张三。

递归机制:

1.调用自身,相同的处理逻辑。

但是起点或者状态不同。问的都是年龄(逻辑),问的是不同的人(起点、状态不同)。

2.独立机制。函数之间需要独立,不能嵌套,导致不能到达出口。就像我问张三年龄,张三说比张四大一岁,张四不能说比张三小一岁,这样就会陷入死循环,不能到达出口。

虽然递归函数执行的代码一样。

3.需要一个出口。

递归优缺点:

1.简化程序设计,提高易读性。

2.递归增加了系统开销。时间上,执行调用与返回的额外工作要占用CPU时间。空间上,随着每递归一次,栈内存就多占用一截。

其实每个递归都可以用for循环实现,可以减少时间复杂度。

递归构成:

1.需要有相同的处理逻辑。

2.递归函数的调用。

3.需要有函数结束语句。递归出口。

4条件判断

选择继续自调用还是结束语句。

5.递归节点需要向结束条件靠近,并最终达到结束条件


0 0
原创粉丝点击