62,612
社区成员
发帖
与我相关
我的任务
分享
public class TestFindFileName {
public static void main(String[] args) {
File file = new File("D://book");
find(file);
}
public static void find(File file){
if(file.isDirectory()){
File[] files = file.listFiles();
if(files != null){
for(File f : files){
if(f.isDirectory()){
//此处递归
find(f);
} else {
System.out.println(f.getName());
}
}
}
} else {
System.out.println(file.getName());
}
}
}
public int fibonacci(int n)
{
if(n <= 2)
{
return 1;
}
else
{
return fibonacci(n-1) + fibonacci(n-2);
}
}
建议:
你需要一个你认为简单并且能够反复研读的递归用例(斐波那契数列递归实现就很不错),接下来你可以尝试用编译器的调试功能逐条运行语句,关注运行过程及返回值。或者,你也可以将代码抄到纸上 但我希望你能注意以下细节,1)每一条语句单独一行,包括大括号。2)将每一行代码标上序号是有益无害的。3)你需要尝试运行每一条语句包括大括号。可以参考我给出的用例格式(在这我需要你知道上述java代码格式并不被多数java开发者所认可)。
递归要点(摘自 算法 第四版):
1.递归总有一个最简单情况。
2.递归调用总是尝试解决一个规模更小的子问题。
3.递归调用的父问题和尝试解决的子问题之间不应该有交集。
结束:递归及其重要但不难学,是必须要掌握的。