简单的逻辑问题,帮忙看下。
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 之类的写法。
------其他解决方案--------------------
帮忙运行下,看下。
确实是i等于3程序over了.但是确实也做给i赋值2+1的操作了啊,
按理说可以输出
------其他解决方案--------------------3
------其他解决方案--------------------
就算这么写
if(i==3){
++i;
}
一样不会被赋值。调试下~
我只是没弄懂for循环跳出后为什么变量不改变,知识点模糊,
------其他解决方案--------------------晕死人,自己去看看java的值传递方式.
test(i+1);
不会把i加1.
要想得到3,test(i++);