// 程序进来后,上面这个判断需要循环10次,才能进入array[from];返回后进入下面语句判断
int r = Math.max(array[from], max(array, from + 1));
// 为什么这两个r这里会循环,并且from每次减1?
这里并不是循环,而是因为 max(array, from + 1)这里递归调用了max函数啊。
int r = Math.max(array[from], max(array, from + 1));
// 为什么这两个r这里会循环,并且from每次减1?
这里并不是循环,而是因为 max(array, from + 1)这里递归调用了max函数啊。
m1=Math.max(array[1], m2 );
m2=Math.max(array[2], m3 );
......
m8=Math.max(array[8],m9 );返回array[8],m9 的大着,继续一层一层的比
m9=Math.max(array[9],9);返回array[9]即 m9
if (from == array.length - 1) {
return array[from];
}
递归过程:每次都把当前数和后面那些数里面最大的作比较,并返回较大的那个,对应
int r = Math.max(array[from], max(array, from + 1));
return r;
递归函数max(int[] array, int from)含义:找出array中从from开始(包括from)到array最后的最大数如果碰到递归不懂的,尝试回答上面这三个问题,再看代码就明白了
//array[0]=11,max(array,1)=22 || 22
//array[1]=22,max(array,2)=19 ||22
//array[2]=3,max(array,3)=19 || 19
//array[3]=4,max(array,4)=19 || 19
//array[4]=15,max(array,5)=19 || 19
//array[5]=16,max(array,6)=19 || 19
//array[6]=7,max(array,7)=19 || 19
//array[7]=8,max(array,8)=19 || 19
//array[8]=19,max(array,9)=10 || 19
刚才看了下教程,我现在从逻辑意义上理解,两数相比计较取大的,from,from+1这样比,碰到from=length-1就返回最后一个数和前一个数比较。