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

          遞歸思想-divide and conquer

          Posted on 2009-08-09 23:08 eyejava 閱讀(261) 評論(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;
                  }
          }
                          


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


          網站導航:
           
          主站蜘蛛池模板: 安宁市| 法库县| 包头市| 平和县| 资讯 | 汝州市| 灵石县| 珲春市| 安新县| 上虞市| 沾化县| 尼木县| 彰武县| 鹰潭市| 河池市| 琼海市| 垫江县| 巴彦淖尔市| 黎平县| 安龙县| 岳阳市| 洛浦县| 吉水县| 呼玛县| 准格尔旗| 阿拉善右旗| 运城市| 开鲁县| 天镇县| 白朗县| 武宁县| 玛沁县| 无棣县| 湟源县| 汕头市| 阿合奇县| 闽侯县| 宜川县| 赞皇县| 山东省| 安远县|