A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李深山 中级黑马   /  2012-3-19 20:53  /  1547 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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;

4 个回复

倒序浏览
代码不完整 没法回答
回复 使用道具 举报
本帖最后由 程洪 于 2012-3-19 21:48 编辑

                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)        //如果array 等于 null 或者 array数组长度 等于0;
                {
                return 0;                                                        //返回0
                }
                int max=array[0];                       
                if(index<array.length-1)                        //如果传入的参数 index小于 数组的长度-1
                {
                        max=findMax(array,index+1);                //最大
                }
                if(max<array[index])                                //如果max这个数 小于 数组的传入的角标的这个数array[index]
                max= array[index];                                        //那么 array[index] 就是最大的数
                return max;


由于代码补完善 大概就分析出这个事情!

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
本程序中每次递归的时候都把 array[0]设为最大值。
首先执行findMax(array, 0);传进方法中的index=0 这时
if(index<array.length-1)
比较传进来的index时候小于数组的长度-1;也就是0<数组的长度-1 成立的话在一次执行findMax(int arra[],intindex)这时的index变为1。
在findMax(array,1)的方法中
if(index<array.length-1) 还是成立,那么就在执行findMax(int array[],int index)它这时index=2,依次类推直到最有一次findMax(int arra[],intindex)取得返回值
下面是最后一次执行findMax(int array[],int index)的情形
当index=7的时候最后一次执行public int findMax(int array[],int index)方法,这时方法中index=8。当index=8的时候if(index<array.length-1)里的代码块就不执行了。
开始执行
if(max<array[index])
  max= array[index];
return max;
取出最大值,也就是比较array[0]和array[8]其中的最大值。并返回给上一次调用此方法的方法。
上一次调用此方法的方法在执行
if(max<array[index])
  max= array[index];
return max;
取出最大值返回给调用它的方法,依次类推回第一次执行public int findMax(int array[],int index)的时候最后返回整个数组的最大值。
可能写的有点啰嗦希望你能明白。
回复 使用道具 举报
谢谢,说的挺好的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马