递归
概念:递归,指在当前方法内调用自己的这种现象
public void method(){ System.out.println(“递归的演示”); //在当前方法内调用自己 method(); }
递归分为两种,直接递归和间接递归。
直接递归称为方法自身调用自己。
间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。
public static void main(String[] args) { // TODO 自动生成的方法存根 System.out.println(sum(100)); System.out.println(get(10)); } public static void a() { a(); } //利用递归计算1~100的和 public static int sum(int n) { if(n==1) { return 1; }else { return n+sum(n-1); } } //利用递归求100的成绩 public static int get(int n) { if(n==1) { return 1; }else { return n*get(n-1); } }
}
注意:递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
public static void main(String[] args) { get(new File("F:\\java0512\\eclipse0512\\io0512")); } public static void get(File dir) { //获取当前目录这一级的文件和文件夹对象数组 File[] files=dir.listFiles(); for (File file : files) { //如果当前file对象是文件夹那么继续遍历 if(file.isDirectory()) { //打印文件夹 System.out.println(file+"文件夹"); get(file); }else { //如果不是文件夹则直接打印文件 System.out.println(file); } } } }
public class MyFilter implements FileFilter{
@Override
public boolean accept(File pathname) {
if(pathname.isDirectory()) {
return true;
}
return pathname.getName().toLowerCase().endsWith(".txt");
}
}
冒泡排序
public static void main(String[] args) { // 冒泡排序法 int[] arr= {7,1,6,22,11,3,2}; for (int i = 0; i < arr.length-1; i++) { for (int j = 0; j < arr.length-i-1; j++) { if(arr[j]>arr[j+1]) { int n=arr[j]; arr[j]=arr[j+1]; arr[j+1]=n; } } } for (int i : arr) { System.out.println(i); } } }