自己知道用Java解决斐波那契,算法如下:package example;class  Fn{
public int f(int n){
return (n == 1 ||n == 2) ? 1 : f(n - 1) + f(n - 2);
}
}
public class Main {
// 数列1 1 2 3 5 8 13.....即从第三项开始都为前两项的和
public static void main(String[] args) {
Fn fn = new Fn();
System.out.println(fn.f(6)); // 打印为8
}
}但我实在不明白f(n - 1) + f(n - 2);递归的作用,哪位兄弟能帮我解释下思路。

解决方案 »

  1.   

    int []a=new int[10];
    a[0]=a[1]=1;
    for(int i=2;i<10;i++){
      a[i]=a[i-2]+a[i-1];
    }a数组里就是前10个斐波那契
      

  2.   

    就是当执行到f(n - 1) + f(n - 2);的时候,保存现场(内存),继续去调用这f方法,知道最后有结果出现,再一步一步回到前面保存的现场,然后将所得的值返回说的有点坳,但是思路就是这样的,建议你去用图画出一个递归调用的过程了,那样比较好理解。
      

  3.   

    不是, 是多次压栈的原理。看看堆栈的东西, 就很好理解了
    PS:俺就是不爽JAVA的JVM, 虽然平台无关性, 不过想搞底层的话, 很难倒不如直接搞C、C++好过