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;
}
}
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;
}
}
解决方案 »
- 刚用hibernate 写了个测试用例,运行没有报错,但是打印出来好多东西 ,这是什么意思?谢谢各位帮忙
- jsp问题
- 在struts2中如何初始化页面数据
- 如何使用C#写注册表的读,写,删除,查找
- 初学webservice,请大家谈谈相对于用servlet来说,webservice有什么优势?
- JRadioButton 如何取得source呀
- 改用哪种XML解析器?
- 基础问题 用java创建一棵树?高手帮忙!
- 各位大虾,请教!!!
- 为什么老是有两个同名finder?发生在一个表有两个主键时生成的实体BEAN里,jbuilder8
- 怎样查询一张表里面的某个字段是否有重复值
- 与数据库交互时产生了错误
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;
}
}
{
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;
}