0%

Java/递归

第18章 递归

18.1 引言

*要点提示: *递归是一种针对使用简单的循环难以编程实现的问题,提供优雅解决方案的技术

有关H-树的知识:

image-20200603222118178

使用递归就是使用递归方法编程,递归方法就是直接或间接调用自身的方法。递归是一个很有用的程序技术。

18.2 示例学习: 计算阶乘

一个递归调用可以导致更多的递归调用,因为这个方法继续把每个子问题分解成新的子问题。要终止一个递归方法,问题最后必须达到一个终止条件。

image-20200603225556923

如果递归不能使问题简化并最终收敛到基础情况,就有可能出现无限递归。

18.3 示例学习: 计算斐波那契数

18.4 使用递归解决问题

所有的递归方法都具有下面的特点:

  • 这些方法使用if-else或switch语句来引导不同的情况
  • 一个或多个基础情况(最简单的情况)用来停止递归
  • 每个递归调用都会简化原始问题,让它不断地接近基础情况,直到它变成这种基础境况为止。

18.5 递归辅助方法

要点提示 :有时候可以通过针对要解决的初始问题的类似问题定义一个递归方法,来找到初始问题的解决方法。这个新的方法称为递归辅助方法,初始问题可以通过调用递归辅助方法来得到解决。

下面是实例:

image-20200606101938995

划重点:

在递归程序设计中定义第二个方法来接收附加的参数是一个常用的设计,这样的方法被称为递归辅助方法。

18.5.1 递归选择排序