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只会被赋值一次,为什么??

解决方案 »

  1.   

    看不出你那里有赋值3,当i=3时你的程序已经over了
      

  2.   


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

  3.   

    不可能,i==3的if语句中,你根本没输出任何东西。test(i+1); 并没有赋值能力,又不是  i+=1  或者 ++i 之类的写法。
      

  4.   


    就算这么写
     if(i==3){
       ++i;
      }
    一样不会被赋值。调试下~
     我只是没弄懂for循环跳出后为什么变量不改变,知识点模糊,
      

  5.   

    晕死人,自己去看看java的值传递方式.
    test(i+1);
    不会把i加1.
    要想得到3,test(i++);