第一次发贴求解,自学java,关于不死神兔代码的理解卡壳了,原理基本懂:f(n)=f(n-1)+f(n-2);
代码如下:
public class DiGui {
public static void main(String[] args) {
System.out.println(fib(4));
}
public static int fib(int n) {
if(n == 1 || n == 2) {
return 1;
}else {
int fib1,fib2,fib3;
fib1=fib(n-1);
fib2=fib(n-2);
fib3=fib1+fib2;
System.out.println("n="+n);
System.out.println("n1:"+(n-1));
System.out.println("n2:"+(n-2));
System.out.println("fib1="+fib1+":"+"fib2="+fib2);
System.out.println("fib3="+fib3);
System.out.println("--------------------");
return fib3;
}
}
}
运行的如果如下:
n=3
n1:2
n2:1
fib1=1:fib2=1
fib3=2
--------------------
n=4
n1:3
n2:2
fib1=2:fib2=1
fib3=3
--------------------
3
不理解的地方是:fib(n-1)和fib(n-2),输出的结果是:
fib1=fib(n-1); 当n=4时:fib1=2、当n=3时:fib1=1
fib2=fib(n-2); 当n=4时:fib2=1、当n=3时:fib2=1
请问该如何理解?