class StringTest{
int num = 0;
public static void main(String[] args)
{
int n = t.aaa(1);
System.out.println(n);
}
public int aaa(int a){
  num = a;
if(a<5){
aaa(a+1);
}

return num;
}
}

class StringTest{
public static void main(String[] args)
{
int n = t.aaa(1);
System.out.println(n);
}
public int aaa(int a)
{
if(a<5)
{
aaa(a+1);
}
return a;
}
}

解决方案 »

  1.   


    class StringTest {
    int num = 0; public static void main(String[] args) {
    StringTest t = new StringTest();
    int n = t.aaa(1);//t要先声明下
    System.out.println(n);
    } public int aaa(int a) {
    num = a;
    if (a < 5) {
    aaa(a + 1);
    } return num;
    }
    }
      

  2.   

    LZ要知道每个方法都有自己的栈public int aaa(int a)
    {
    if(a<5)
    {
    aaa(a+1);
    }
    return a;
    }第一次进入方法,就有一个方法栈,那么a是这个方法栈的变量,其他方法栈修改不了它
    每次递归都会新生成一个方法栈,每次新生成的栈的a都会不同,但是不会影响第一次生成的方法栈的a
    所以最终返回的是第一次进入方法的a,所以就是1如果不想使用成员变量,可以试试这样
    public int aaa(int a)
    {
    if(a<5)
    {
    return aaa(a+1); //改下这里,让它返回每次的调用结果
    }
    return a;
    }