public class Hello {
public static void main (String args []) {
int num = 100;
System.out.println(sum(num)) ;
}
public static int sum(int data ) {
if (data >1){
return data + sum(data - 1) ;
}
System.out.println(data) ;
return data ;
}
}
输出的结果是
1
5050
为什么是这样呢?返回的到底是哪个值?即return到底在这个代码里面是怎么操作的?
public static void main (String args []) {
int num = 100;
System.out.println(sum(num)) ;
}
public static int sum(int data ) {
if (data >1){
return data + sum(data - 1) ;
}
System.out.println(data) ;
return data ;
}
}
输出的结果是
1
5050
为什么是这样呢?返回的到底是哪个值?即return到底在这个代码里面是怎么操作的?
这应该是求1至100的和
return
}
return
if() {
return
} else {
return
}
这两个效果是一样的,因为return会提前结束方法
你可以自己简单跟踪一下代码
传100进入,也就是data=100,满足if,所以返回if的return,但if的return有递归调用sum(99)
然后sum里的data=99,又进入if,又返回if的return,又因为还有递归,继续调用sum(98)
等等等等,一次类推,知道sum(1),data=1,不满足if才返回if外的return