posts - 13, comments - 7, trackbacks - 0, articles - 0

          遞歸思想-divide and conquer

          Posted on 2009-08-09 23:08 eyejava 閱讀(258) 評論(0)  編輯  收藏

          遞歸的思想是分而治之(divide and conquer),將一個問題域為N的問題分解(partition)成兩個獨立的部分,而每一個部分又是同樣的問題,從而這樣一直分解下去,直到問題可求為止。
          如求一個數組的最大值(最小值同理):

          非遞歸思想解法:
          public int max(int[] arr) {
                  int max = arr[0];
                  for (int i = 1, len = arr.length; i < len; ++i) {
                      if (arr[i] > max) {
                            max = arr[i];
                      }
                 }
                  return max;
          }



          遞歸思想:
           public class MaxTest {
                  public int max(int[] arr) {
                          return recMax(arr, 0, arr.length-1);
                  }
                  private int recMax(int[] arr, int left, int right) {
                          if (left == right) return arr[left];
                          int m = (left+right)/2;
                          int v1 = recMax(arr, left, m);
                          int v2 = recMax(arr, m+1, right);
                          return (v1>v2)?v1:v2;
                  }
          }
                          


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 雷波县| 成安县| 芮城县| 吴旗县| 万全县| 庐江县| 札达县| 华阴市| 弥渡县| 天全县| 南安市| 睢宁县| 宁陕县| 保靖县| 镇江市| 南岸区| 海门市| 特克斯县| 昭觉县| 浦江县| 陕西省| 田阳县| 隆林| 宁德市| 兴宁市| 张家川| 汝州市| 田阳县| 三原县| 台安县| 山东省| 平邑县| 绥宁县| 平远县| 靖安县| 兰西县| 太保市| 浪卡子县| 防城港市| 修武县| 新绛县|