思路
1.确定能否使用递归求解
2.推到出递推关系,即父问题与子问题的关系,以及递归的结束条件
深入到最里层的叫做递
从最里层出来的叫做归
在递的过程中,外层函数内的局部变量(以及方法参数)并未消失,归的时候还可以用到
阶乘
public static void main(String[] args) {int i = f(5);System.out.println(i);}public static int f(int n) {if (n == 1) {return 1;}return n * f(n - 1);} }
打印字符串
public static void p(int n,String str){if (n==str.length()){return;}p(n+1,str);System.out.println(str.charAt(n)); }
二分查找
public static int search(int[] arr, int target) {return f(arr, target, 0, arr.length - 1); }private static int f(int[] arr, int target, int i, int j) {if (i > j) {return -1;}int m = (i + j) / 2;if (target < arr[m]) {return f(arr, target, i, m - 1);} else if (target > arr[m]) {return f(arr, target, m + 1, j);} else {return m;} }
冒泡排序
private static void bubble(int[] a, int j) {if (j == 0) {return;}int x=0;for (int i = 0; i < j; i++) {if (a[i] > a[i + 1]) {int t = a[i];a[i] = a[i + 1];a[i + 1] = t;x=i;}}bubble(a,x); }