这个Java程序怎样运行?可以解释一下吗?

public class Cm{
public static void main(String[ ] args){
System.out.println( test(15,26,4) );
}
static int test(int x, int y, int z) {
return test( x, test(y,z) );
}
static int test(int x,int y){
if(x>y) return x;
else return y;
}}
中间的return是什么意思,还有怎么有个( x, test(y,z) ),比较大小后怎么会输出y的值呢?
可以详细地解说一下吗?谢谢各位高手拉!

public class Cm{
public static void main(String[ ] args){
System.out.println( test(15,26,4) );
}
static int test(int x, int y, int z) {
return test( x, test(y,z) );/****这种属于嵌套,在函数中调用函数***/
}
static int test(int x,int y){
if(x>y) return x;
else return y;
}
}

/*在mian方法中:执行test(15,26,4),将这些个数传给对应的test,带有三个参数的函数,所以先传给static int test(int x, int y, int z)
* 这个test函数。x对应15,当对应test(y,z)时,又转向带有两个参数的函数。
* 于是开始执行static int test(int x,int y)这个函数,y对应x为26.z对应y为4.执行结果为因为26>4,所以return返回x为26;
*又回到带有三个参数static int test(int x, int y, int z)这个函数,再调用带有2个参数的static int test(int x,int y)这个函数;
*刚说x对应15,return返回x为26;因为26>15,所以返回return这次返回y为26.至此mian方法里就输出:26.
*
*这种现象有时候很绕人的,但是你一点一点的琢磨就会很简单了,呵呵,我说的语言表达不是很好,但还是希望对你有所帮助。你去看看
*C语言基础的书,关于函数那一章,讲的很清楚。多看看就明白了.
*
*/
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-11-21
static int test(int x,int y){
因为你定义的方法中是需要返回值的,所以用return返回一个值。
test( x, test(y,z) )相当于:
int temp=test(y,z);
return test(x,temp);
第2个回答  2007-11-21
test( x, test(y,z) );

这句话的意思嘛,先看里面那个test(y,z),返回的东西显然是y和z 的值中相对较大的一个,也就是y的值了对吧,那上面那句就相当于test(x,y)了,返回的自然也是x和y中相对较大的也就是的值啦
第3个回答  2007-11-21
这个程序实现的功能是从 x y z中取得最大的一个数
static int test(int x,int y){
if(x>y) return x; //当x>y的时候 返回的是x的值
else return y; //否则,返回的是y的值
}}

而static int test(int x, int y, int z) {
return test( x, test(y,z) );
}这个方法则是使用了一个嵌套, test(y,z)返回的是y和z中比较大的那个数,按你给的3个参数 15 26 4来说 test(y,z)最后的值就是26.
由此test( x, test(y,z) ); 就变成了test(x,y),然后再从x,y中取得较大的那个数。当然这个数是y了。

return的意思就是给你的方法返回一个值,比如说数学里有这么个函数z=f(x,y), 要是程序在f方法里return y; 那么 就是说最终让z=y。
相似回答