斐波那契数列想必大家都不陌生,使用递归便可以实现它的算法,但是你是否有想过递归函数的时间复杂多少呢?今天我们就来看一下关于递归的那些事。
斐波那契数列 Fn 定义如下
F0=0, Fl=1, Fn=Fn-1+Fn-2, n=2,3…
请就此斐波那契数列,回答下列问题。
(1) 在递归计算 Fn 的时候,需要对较小的 Fn-1,Fn-2,…, Fl, F0 精确计算多少次?
(2) 如果用大 O 表示法,试给出递归计算 Fn 时递归函数的时间复杂度是多少?
我们一个一个的来解决:

  • [1] 第一问可能会是很多人无从下手,别急我们可以先实例化,从少的数列发现规律,加入我们是计算F5,则有:F5=F4+F3,F4=F3+F2,F3=F1+F2,F2=F1+F0.这时我们来计算F1,F0精确计算了多少次,为了方便计算,我们画图来表示:
    关于斐波那契数列递归次数的那些事!

  • 解决了第一问,那么第二问就很好解决了,我们已经计算出了递归次数为2^n-1
    那么递归的时间复杂度为O(f(n))=O(2^n-1)
    就是O(2^n).
    你学会了吗?????

相关文章:

  • 2021-09-03
  • 2021-12-03
  • 2022-02-08
  • 2021-12-18
  • 2022-02-17
  • 2022-01-04
  • 2022-01-20
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-07
  • 2022-12-23
  • 2021-06-26
  • 2021-10-27
  • 2021-09-29
相关资源
相似解决方案