java if 语句的一个问题 求解

代码如下:public class rabbit {

int i =10; 

public static int fun(int n) {
    if (n == 1 || n == 2) {
        return 1;
    }

    else {
        return fun(n - 1) + fun(n - 2);

    }

}

public static void main(String[] args) {

    rabbit p = new rabbit();

    p.fun(p.i);

    System.out.print(fun(p.i - 1) + fun(p.i - 2));

}

}
结果为55,不明白是怎么计算的,求大神指点

 递归,当n=1或者2的时候,结果是1
fun(1)=1
fun(2)=1
当n>2的时候,结果是fun(n-1)+fun(n-2)
因此可以得到
fun(3)=fun(2)+fun(1)=1+1=2
fun(4)=fun(3)+fun(2)=2+1=3
fun(5)=fun(4)+fun(3)=5
fun(6)=fun(5)+fun(4)=8
fun(7)=13
fun(8)=21
fun(9)=34
fun(10)=55

递归,把函数一样的带入进去,i的值取小一点,自己算一下,就明白了

当运行到System.out.print(fun(p.i - 1) + fun(p.i - 2));的时候,p.i-1=9,p.i-2=8,则相当于System.out.print(fun(9) + fun(8));因为9不为1或2,则fun(9)返回fun(8)+fun(7)=fun(7)+fun(6)+fun(6)+fun(5)=fun(6)+fun(5)+fun(5)+fun(4)+fun(5)+fun(4)+fun(4)+fun(3)=fun(5)+fun(4)+fun(4)+fun(3)+fun(4)+fun(3)+fun(3)+fun(2)+fun(4)+fun(3)+fun(3)+fun(2)+fun(3)+fun(2)+fun(2)+fun(1)=fun(4)+fun(3)+fun(3)+fun(2)+fun(3)+fun(2)+fun(2)+fun(1)+fun(3)+fun(2)+fun(2)+fun(1)+fun(2)+fun(1)+1+fun(3)+fun(2)+fun(2)+fun(1)+fun(2)+fun(1)+1+fun(2)+fun(1)+1+1+1=fun(3)+fun(2)+fun(2)+fun(1)+fun(2)+fun(1)+1+fun(2)+fun(1)+1+1+1+fun(2)+fun(1)+1+1+1+1+1+1+fun(2)+fun(1)+1+1+1+1+1+1+1+1+3=fun(2)+fun(1)+1+1+1+1+1+1+1+1+3+1+1+6+1+1+8+3=1+1+8+3+2+6+2+8+3=34,类似fun(8)返回21,则fun(9)+fun(8)=34+21=55

递归,一遍一遍把数字带进去算最后就知道啦

递归计算斐波那契数。。。