读书人

简单的逻辑有关问题帮忙看上

发布时间: 2012-12-17 09:31:40 作者: rapoo

简单的逻辑问题,帮忙看下。
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 之类的写法。
[其他解释]

引用:
看不出你那里有赋值3,

当i=3时你的程序已经over了


帮忙运行下,看下。
确实是i等于3程序over了.但是确实也做给i赋值2+1的操作了啊,
按理说可以输出

[其他解释]
3


[其他解释]
引用:
不可能,i==3的if语句中,你根本没输出任何东西。

test(i+1); 并没有赋值能力,又不是 i+=1 或者 ++i 之类的写法。


就算这么写
if(i==3){
++i;
}
一样不会被赋值。调试下~
我只是没弄懂for循环跳出后为什么变量不改变,知识点模糊,
[其他解释]
晕死人,自己去看看java的值传递方式.
test(i+1);
不会把i加1.
要想得到3,test(i++);

读书人网 >J2SE开发

热点推荐