日期:2014-05-20  浏览次数:20865 次

简单的逻辑问题,帮忙看下。
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++);