尝试一
结果:答案正确:恭喜!您提交的程序通过了所有的测试用例
代码:
public class Solution {
//用来存最大值
private int max;
public int FindGreatestSumOfSubArray(int[] array) {
/* 特殊情况处理*/
if(array==null || array.length==0){
return Integer.MAX_VALUE;
}
/* for遍历每个起点*/
max=array[0];
for(int i=0;i<array.length;++i){
if(array[i]>max){
max=array[i];
}
find(i,array,0);
}
return max;
}
/*i:表示起点;array:表示进行操作的数组;sum:表示从起点开始,所加元素的和*/
private void find(int i,int [] array,int sum){
/* 递归结束标识*/
if(i>=array.length){
return ;
}
/* 判断当前sum是否大于max*/
sum+=array[i];
if(sum>max){
max=sum;
}
/* 递归操作*/
find(i+1,array,sum);
}
}
分析:以数组的每个元素为起点,不停尝试,如果sum>max,就修改max。直到最后返回max
结论
- 循环中,套递归。