日期:2014-05-20  浏览次数:20715 次

高手!求高手,帮解释一下题啊
int array[]={0,34,67,90,21,-9,98,1000,-78};
System.out.println(new CTest().findMax(array, 0));
}
public int findMax(int array[],int index)
{
if(array==null || array.length==0)
{
return 0;
}
int max=array[0];
if(index<array.length-1)
{
max=findMax(array,index+1); //帮我解释一下这几个if语句。详细点啊
}
if(max<array[index])
max= array[index];
return max;


------解决方案--------------------
public int findMax(int array[],int index)
{
if(array==null || array.length==0)//检查数组是否存在,是否有元素
{
return 0;
}
int max=array[0];
if(index<array.length-1) //检查是否已经遍历完数组
{
max=findMax(array,index+1); //递归
}
if(max<array[index]) //在数组中发现新的最大值
max= array[index]; //替换最大值
return max;
------解决方案--------------------
有递归算法实现的一个查找数组中的最大值
------解决方案--------------------
实际就是递归求一个数组的最大值
那个if的说明如下:
Java code

int array[]={0,34,67,90,21,-9,98,1000,-78};
//    System.out.println(new CTest().findMax(array, 0));
//    }
    public int findMax(int array[],int index)
    {
    if(array==null || array.length==0)
    {
    return 0;
    }
    int max=array[0];
    /**
     * 这个if语句表示如果index小于数组长度-1 ,也就是<=array.length-2
     * 就递归调用(自己调用自己)findMax方法,此时他给的参数是index+1。
     * 和if条件组合起来,说明数组下标就是0到array.length-1,这样就不会出现数组下标越界的异常。
     * 简单的说,被程序定义的array数组,length为9,那他的index范围就是0~8,如果是array[9]就不行了。
     */
    if(index<array.length-1)
    {
    max=findMax(array,index+1); 
    }
    if(max<array[index])
    max= array[index];
    return max;

------解决方案--------------------
就是以递归,index+1,可以比较下一个,自个那笔比划比划