Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All
rights reserved. 0132130807
1
第 20 章 递 归
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All
rights reserved. 0132130807
2
动 因
假设希望找出某目录下所有包含某个特定单
词的文件,该如何解决这个问题呢?有几种
方法可以解决这个问题。一个直观且有效的
解决方法是使用递归在子目录下递归地搜索
所有文件。
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All
rights reserved. 0132130807
3
动 因
经典的八皇后难题就是将八个皇后放在棋盘上,而没
有任何两个皇后可以互相攻击(既不会出现两个皇后
在同一行、同一列或者同一条对角线上的情况),如
图所示。该如何编写程序解决这个问题呢?一个好的
办法就是使用递归。
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All
rights reserved. 0132130807
4
学习目标
了解什么是递归方法以及使用递归方法的好处(第 20.1 节)。
决定递归方法的基础情况(第 20.2-20.5 节)。
理解在调用栈中如何处理递归方法的调用(第 20.2-20.3 节)。
使用递归解决问题(第 20.2-20.5 节)。
使用一个重载的辅助方法派生一个递归方法(第 20.5 节)。
使用递归获取目录大小(第 20.6 节)。
使用递归解决汉诺塔问题(第 20.7 节)。
使用递归绘制分形(第 20.8 节)。
理解递归和迭代之间的联系和区分(第 20.9 节)。