高手!求高手,帮解释一下题啊
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,可以比较下一个,自个那笔比划比划