代码:
、、、
public class Test {
public static void main(String[] args) throws Exception {
System.out.println(get15(20));
}
public static int get15(int num){
if (num==15){
return num;
}else {
num--;
get15(num);
}
return num;
}
}
、、、
输出结果:19
====
、、、
public class Test {
public static void main(String[] args) throws Exception {
System.out.println(get15(20));
}
public static int get15(int num){
if (num==15){
return num;
}else {
num--;
//差别点:仅仅多出一个num的赋值
num=get15(num);
}
return num;
}
}
、、、
输出结果:15
====
分析:
对于第一段代码,分析如下:
、、、
public class Test {
public static void main(String[] args) throws Exception {
System.out.println(get15(20));
}
public static int get15(int num){
//num=20
if (num==15){
return num;
}else {
//num=20
num--;
//num=19
get15(num);//程序递归,直到"num"=15(注意这个引号,"num"与num已经不是一个值了,传参理解。此时其实『get15(num)』的值是返回值15)
}
return num;//此时输出的是num,就是19
}
}
、、、
另外注意传参是对象的时候,便可以直接传出,因为传参传的是地址。(String又是个例外,原因百度)