用递归方法求数组的最大值

1、直接利用递归:

  1. package programmer;  
  2.   
  3. import java.util.Scanner;  
  4.   
  5. /* 
  6.  * 利用递归算法求最大值 
  7.  */  
  8. public class MaxRecursion {  
  9.     public int maxRecursion(int[] A, int low, int high) {  
  10.         if (low > high)  
  11.             return -1;  
  12.         else {  
  13.             if (A[low] < maxRecursion(A, low + 1, high))  
  14.                 return maxRecursion(A, low + 1, high);  
  15.             else  
  16.                 return A[low];  
  17.         }  
  18.     }  
  19.   
  20.     public static void main(String[] args) {  
  21.         Scanner sc = new Scanner(System.in);  
  22.         int N = sc.nextInt();  
  23.         int[] A = new int[N];  
  24.         for (int i = 0; i < A.length; i++)  
  25.             A[i] = sc.nextInt();  
  26.         System.out.println(new MaxRecursion().maxRecursion(A, 0, A.length - 1));  
  27.     }  
  28. }  


2、利用二叉查找寻找数组中的最大值:
  1. package programmer;  
  2.   
  3. import java.util.Scanner;  
  4.   
  5. /* 
  6.  * 利用二分查找法递归寻找数组中的最大值 
  7.  */  
  8. public class MaxBinarySearch {  
  9.     public int maxBinarySearch(int[] A, int low, int high) {  
  10.         if (low > high)  
  11.             return -1;  
  12.         else {  
  13.             int mid = (low + high) / 2;  
  14.             int tmp = maxBinarySearch(A, low, mid - 1) > maxBinarySearch(A,  
  15.                     mid + 1, high) ? maxBinarySearch(A, low, mid - 1)  
  16.                     : maxBinarySearch(A, mid + 1, high);  
  17.             return tmp > A[mid] ? tmp : A[mid];  
  18.         }  
  19.     }  
  20.   
  21.     public static void main(String[] args) {  
  22.         Scanner sc = new Scanner(System.in);  
  23.         int N = sc.nextInt();  
  24.         int[] A = new int[N];  
  25.         for (int i = 0; i < A.length; i++)  
  26.             A[i] = sc.nextInt();  
  27.         System.out.println(new MaxBinarySearch().maxBinarySearch(A, 0,  
  28.                 A.length - 1));  
  29.     }  
  30. }  

但是复杂度并没有减少,只是提供一种新的思考方法。

猜你喜欢

转载自blog.csdn.net/wuxiaosi808/article/details/78220002
今日推荐