递归调用的笔记

递归调用最重要的三点:

1.递归调用总有一个最简单的情况——方法的第一条语句 总是一个包含return 的条件语句

2.递归调用总是去尝试解决一个规模更小的子问题;这样地柜调用才能收敛到最简单的情况

3.递归调用的父问题和尝试解决的子问题之间不应该有交集。

package ch1.ch1_1;

public class Rank {//p15二分查找
	public static int rank(int key,int[]a){
		return rank(key,a,0,a.length-1);
	}

	public static int rank(int key, int[] a, int lo, int hi) {
		//若果key存在于a[]中,他的索引不会小于lo不会大于hi
		
		if (lo>hi) {return -1;}
		
		int mid = lo+(hi-lo)/2;
		
		if (key>a[mid]) {
			return rank(key, a, lo, mid+1);
		}
		else if (key<mid) {
			return rank(key, a, lo, mid-1);
		}
		return mid;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_38339863/article/details/79221725