递归Fibonacci方法的执行顺序

时间:2011-07-04 18:43:00

标签: language-agnostic recursion

例如:

public static int fibb (int n) {
    if(n==0||n==1)
        return 1;
    else{
        return fibb(n-1)+fibb(n-2);
      }
}

fibb(n-1)+fibb(n-2)将如何被执行..就像fibb(n-1)首先完成fibb(n-2)开始或者究竟是什么一样,我对递归很新,似乎无法包装我的头脑是如何运作的。

帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

首先,将执行递归调用(依赖于您的编程语言的顺序),然​​后将它们的结果汇总在一起。

答案 1 :(得分:1)

 fibb(3) returns fibb(2)                                +  fibb(1)
                 fibb(2) returns fibb(1) + fibb (0)

 so you get                         1     +     1       +       1   = 3



 fibb(4) returns fibb(3) + fibb(2), we know fibb(3) returns three from above,
 fibb(2) returns fibb(1) + fibb(0) also from above, 

 so fibb(4) returns 3 + 2 = 5

重要的是要注意,通过此实现,您必须计算两次以前的斐波纳契数。这意味着当你到达约20(猜测)时,它会变得很慢。