递归:方法自己调用自己
活着就是a调用b b调用c c调用a
必须有停止方式
构造方法不能递归
package Demo62;
import com.sun.org.apache.bcel.internal.generic.ARETURN;
public class Demo621 {
public static void main(String[] args) {
b1(1);
}
private static void b1(int i) {
if(i<=100)
{ System.out.println(i);
b1(++i);
}
return;
}
}
练习:计算1~n的和
package Demo62;
public class Demo602 {
public static void main(String[] args) {
int sum= b1(100);
System.out.println(sum);
}
private static int b1(int i) {
if(i==1){
return 1;
}
return i+b1(i-1);
}
}
递归的效率较低尽量不要使用。
练习:递归调用显示文件夹内所有文件
package Demo62;
import java.io.File;
public class Demo623 {
public static void main(String[] args) {
File file = new File("F:\\java付费视频");
getAllfile(file) ;
}
private static void getAllfile(File file) {
File[] files = file.listFiles();//这里需要一个File数组
for (File file1 : files) {
if(file1.isDirectory()){//判断是不是文件夹
getAllfile(file1);
}else {
System.out.println(file1);
}
}
}
}
练习:文件搜索只找到某一特定文件后缀的文件
package Demo62;
import java.io.File;
public class Demo624 {
public static void main(String[] args) {
File file = new File("F:\\java付费视频");
getAllfile(file) ;
}
private static void getAllfile(File file) {
File[] files = file.listFiles();
for (File file1 : files) {
if(file1.isDirectory()){
getAllfile(file1);
}else {
String name = file1.getName();
// String path = file1.getPath();
// String s = file1.toString();
boolean b = name.endsWith(".txt");
if(b){
System.out.println(file1);
}
}
}
}
}