斐波那契序列的递归调用

时间:2014-01-15 10:26:43

标签: recursion fibonacci

为了递归地找到斐波那契数,该关系是f(n)= f(n-1)+ f(n-2)。 对f(n)的递归函数调用f(n-i)多少次(就n和i而言)?

我理解在跟踪递归调用时会生成二叉树。但是,似乎没有任何固定的模式来确定f(n-i)的递归调用次数。任何建议?

例如,在寻找f(5)时,

f(5)=f(4)+f(3)  
f(5)=f(3)+f(2)+f(2)+f(1)  
f(5)=f(2)+f(1)+f(1)+f(0)+f(1)+f(0)+f(1)  
f(5)=f(1)+f(0)+f(1)+f(1)+f(0)+f(1)+f(0)+f(1)

这里调用f(5)-1,f(4)-1,f(3)-2,f(2)-3,f(1)-5,f(0)-3的次数。

感谢。

1 个答案:

答案 0 :(得分:0)

序列1,1,2,3,5,3应该看起来很熟悉,因为忽略了最后一个数字,它又是斐波那契序列。

c(x)是计算 fib(n) fib(x)的次数。< / p>

    所有 x&gt;
  • c(x)= 0 n ,因为永远不会调用 fib(x)
  • c(n)= 1 ,因为 fib(n)只调用一次。
  • c(x)= c(x + 1)+ c(x + 2)对于所有 0&lt; x&lt; n ,因为 fib(x)是从 fib(x + 1) fib(x + 2)调用的。< / LI>
  • c(0) = c(2),这是一个特殊情况,因为从 fib调用 fib(0) (2)但不是 fib(1)

所以序列 c(n),c(n-1),...,c(2),c(1)是Fibonacci序列, c(0) 等于 c(2)

i n 而言,

  • fib(n-i)被称为 fib(i + 1)0≤i< Ñ
  • fib(n - n)= fib(0)被称为 fib(n - 1)次。