public class Recursion
{
public static int mystery(int n)
{
if(n>0)
{
return (n+1)*mystery(n-2);
}
else
{
return 1;
}
}
public static void main(String[] args)
{
int x;
x = mystery(5);
System.out.println(x);
}
}
我是Java的新手。现在,这打印出来了48.但是,有人可以告诉我它到底是怎么回事吗?就像,我想知道它正在做的每一步。
答案 0 :(得分:2)
如果你用mystery()
拨打n<=0
它会返回1,在所有其他情况下,它会递归调用自己,所以第一次将要返回的神秘调用将返回1,即叫它接下来会回来,依此类推:
电话顺序:神秘(5),神秘(3),神秘(1),神秘(-1)
订单回叫:神秘(-1),神秘(1),神秘(3),神秘(5)
答案 1 :(得分:0)
**
**
//main method
public static void main(String[] args){
iMethod(0);
}
public int iMethod(int c){
if(c>=20){
System.out.println("I finished with c= "+c);
return;
}else if(c<20)
return iMethod(c=c+5);
}
使用(c = 0)输入iMethod:
1.enter second else if(c<20)
it will go to iMethod(5) cause c now is 5
2.enter second else if(c<20)
it will go to iMethod(10) cause c now is 10
...
3.iMethod(15)
4.enter the first if(c>=20)
it prints 'I finished with c=20' and then return;
返回实际调用它的方法
[在此示例中,它已从public static void(String [] args)调用]
实际上,每次方法 iMethod 自我调用时,返回的参数不同。
例如像树一样看待它:
the actually iMethod
|
called her self
|
called her self
|
......
finish somewhere and return;