什么是递归 指在当前方法内调用自己的这种现象。
调用时,要有一个退出的条件,否则会死循环。
计算1~n的和 1到3的和:1 + 2 + 3。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public static void main (String[] args) { int num = 3 ; int sum = getSum(num); System.out.println(sum); } private static int getSum (int num) { if (num == 1 ){ return 1 ; } return num + getSum(num-1 ); }
递归求阶乘 10的阶乘10!
10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public static void main (String[] args) { int num = 4 ; int sum = getJieCheng(num); System.out.println(sum); } private static int getJieCheng (int num) { if (num == 1 ){ return 1 ; } return num * getJieCheng(num-1 ); }
斐波那契数列 # 什么是斐波那契数列
又称黄金分割数列、因数学家列昂纳多 · 斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为 “兔子数列”
指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
# 求数列的第6位的值是多少
递归分析
1 2 3 4 5 当位数为1 和2 时,当前返回的值应该是1 ; 当位数为3 时,返回值应该 =2 =1 +1 ; 当位数为4 时,返回值 =3 =2 +1 ; 当位数为5 时,返回值 =5 =3 +2 ; 大于等于3 的情况下,当前位数(n)的数值 =f(n-1 )+f(n-2 )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public static void main (String[] args) { int f = f(3 ); System.out.println(f); for (int i = 1 ; i <= 15 ; i++) { System.out.print(f(i) + "\t" ); } } public static int f (int n) { if (n == 1 || n == 2 ) return 1 ; else return f(n - 1 ) + f(n - 2 ); }
文件搜索 搜索指定目录下指定扩展名的文件,例如:D盘下 aaa目录中所有的 .txt文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public static void printDir (File dir) { File[] files = dir.listFiles(); for (File file : files) { if (file.isFile()) { if (file.getName().endsWith(".txt" )) { System.out.println("文件名:" + file.getAbsolutePath()); } } else { printDir(file); } } }