代码示例:
public static void main(String[] args) {
int[] arr = {2,4,6};
int n = 0;
int m = arr.length-1;
System.out.println(GetSum(arr));
System.out.println(GetSum1(arr,n));
System.out.println(GetSum2(arr,m));
System.out.println(GetSum3(arr,0,2));
}
public static int GetSum(int[] arr){
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum +=arr[i];
}
return sum;
}
/**
* 从零索引位置往后加
* @param arr
* @param begin 数组的起始索引,++begin 不停的让begin往后移动,直到移到索引最大的位置。
* @return GetSum(arr,0)
* arr[0]+GetSum1(arr,1)
* arr[1]+GetSum1(arr,2)
* return arr[2];
*/
public static int GetSum1(int[] arr,int begin){
//基线条件
if(begin==arr.length-1) return arr[begin];
return arr[begin]+GetSum1(arr,++begin);
}
/**
* 从后往前倒着加
* @param arr
* @param end 数组的最后一个索引, --end 不停的让end往前移动,直到移到索引0位置。
* @return 进行递归 Get(arr,2)
* arr[2]+GetSum(arr,1)
* arr[1]+GetSum(arr,0)
* return arr[0];
*/
public static int GetSum2(int[] arr,int end){
//基线条件
if(end==0) return arr[end];
return arr[end]+GetSum2(arr,--end);
}
/**
*数组部分求和------指定从那个索引加到那个索引。
* @param arr
* @param begin ----指定的起始索引
* @param end ----指定的结束索引
* @return 让 begin往后移动 ++begin
* GetSum(arr,0,2)
* arr[0]+GetSum3(arr, 1, 2)
* arr[1]+GetSum3(arr, 2, 2)
* return arr[2]
* 让 end 往前移动 --end
* GetSum(arr,0,2)
* arr[2]+GetSum3(arr, 0, 1)
* arr[1]+GetSum3(arr, 0, 0)
* return arr[0]
*/
public static int GetSum3(int[] arr,int begin,int end){
//基线条件
if(begin==end) return arr[end];//return arr[begin]
//return arr[begin]+GetSum3(arr, ++begin, end);
return arr[end]+GetSum3(arr, begin, --end);
}