简单的逻辑问题,帮忙看下。
public static void test(int i){//1,2
if(i==3){
}else{
for(int b=0;b<3;b++){
System.out.println("|===============i====================|"+i);
test(i+1);
System.out.println("|=======copy====i=========copy=======|"+i);
}
}
}
main方法{
?test(1);
}
输出结果为:
|===============i====================|1
|===============i====================|2
|=======copy====i=========copy=======|2
|===============i====================|2
|=======copy====i=========copy=======|2
|===============i====================|2
|=======copy====i=========copy=======|2
|=======copy====i=========copy=======|1
|===============i====================|1
|===============i====================|2
|=======copy====i=========copy=======|2
|===============i====================|2
|=======copy====i=========copy=======|2
|===============i====================|2
|=======copy====i=========copy=======|2
|=======copy====i=========copy=======|1
|===============i====================|1
|===============i====================|2
|=======copy====i=========copy=======|2
|===============i====================|2
|=======copy====i=========copy=======|2
|===============i====================|2
|=======copy====i=========copy=======|2
|=======copy====i=========copy=======|1
为什么没有i被赋值为3??
我认为,既然i可以被赋值成2
也可以继续被赋值,可是跟踪后明显发现i只会被赋值一次,为什么??
[最优解释]
看不出你那里有赋值3,
当i=3时你的程序已经over了
[其他解释]
=======copy====i=========copy=======
[其他解释]
不可能,i==3的if语句中,你根本没输出任何东西。
test(i+1); 并没有赋值能力,又不是 i+=1 或者 ++i 之类的写法。
[其他解释]