递归

方法可以调用自己。

编写递归代码最重要的三点:

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

2、递归调用总是去尝试解决一个规模更小的子问题,这样递归才能收敛到最简单的情况。在下面的代码中,第四个参数和第三个参数的差值一直在缩小。

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

 

二分查找的递归实现:

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 ) {

  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 > a[mid] )

    return rank ( key, a, hi, mid + 1 );

  else

    return mid;

}

posted @ 2017-05-12 17:35  sinpi  阅读(156)  评论(0编辑  收藏  举报