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;
                  }
          }
                          


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


          網站導航:
           
          主站蜘蛛池模板: 岳普湖县| 容城县| 镇江市| 马边| 临朐县| 济南市| 嘉祥县| 平原县| 宁阳县| 扶余县| 临城县| 白河县| 绩溪县| 扎赉特旗| 拜城县| 海阳市| 广平县| 高密市| 洛浦县| 苏州市| 巴彦淖尔市| 永仁县| 勃利县| 太保市| 万安县| 奇台县| 大安市| 五华县| 清原| 尚志市| 南澳县| 奇台县| 邢台市| 海林市| 新昌县| 甘南县| 台湾省| 山丹县| 宜良县| 古丈县| 石狮市|