小时候我们都听过一个故事:“从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲的故事是:"从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲的故事是:"......耳熟能详的童谣却直接的表达递归的使用。
递归算法是指该算法直接或间接调用了自己的本身。一般递归的使用有两种场景:
1.问题的定义是递推的。(5的阶乘)
public class a {
//解题的关键是找到递归结束的条件
//5! = 5 * 4 * 3 * 2 * 1
public static long jiecheng(long num) {
if (num == 1) {
return 1;
}
return num * jiecheng(num - 1);
}
public static void main(String[] args) {
long result = a.jiecheng(5);;
System.out.println(result);
}
}
2.问题的解决方法存在自我调用。(二分查找)
public class a {
public static void main(String[] args) {
int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
int guess = 10;
int index = a.search(nums, guess, 0, nums.length - 1);
System.out.println(index);
}
public static int search(int a[], int guess, int begin, int end){