if 使用范围#
public class Test {
public static void main(String[] args) {
Test t = new Test();
t.split(12);
}
public int split(int num){
if (num > 1) {
if (num % 2 != 0)
System.out.println(split((num + 1) / 2));
System.out.println(split(num / 2));
//System.out.println(split(num / 2)); 和上行代码同样效果
}
return num;
}
}
1.当执行到split(3)时,num = 3
3 > 1,且if( 3 % 2 != 0)
所以,下面两行代码
System.out.println(split((3 + 1) / 2));
System.out.println(split(3 / 2));
都会执行
1.1先执System.out.println(split((3 + 1) / 2));
1.1.1执行结果为split(2),num =2
2 > 1,但是if( 3 % 2 != 0)不满足,为false
所以此时,只执行第二行代码
System.out.println(split(2 / 2));
结果为:1
1.2后执行System.out.println(split((3 / 2));
1.1.1执行结果为split(1)
结果为:1
所以最终结果为:
1、2、1、--------