分而治之思想(Java)
阿新 • • 發佈:2019-01-06
public class SumArray { public static void main(String[] args){ int[] arr = {1,2,4,5,6,7,8,9}; int sum = sumArray(arr, 0, arr.length-1); System.out.println(sum); } public static int sumArray(int[] A, int lo, int hi){ //判斷遞迴基的情況 如果lo和hi相撞了返回A[lo]或A[hi]都行 if(lo == hi || lo > hi){ return A[lo]; } int mid = (lo + hi) / 2; /*將大問題分成兩個小問題,分別得到結果後,再將小問題的答案合併 * 就得到大問題的答案,(分而治之) * 分而治之與減而治之還有所區別,分而治之是分成兩個規模大致相當的小問題解決 * 而減而治之是每次分出來一個很小的子問題逐漸的減小問題的規模 * */ return sumArray(A, lo, mid) + sumArray(A, mid+1, hi); } }