递归和非递归算法求解Fibonacci数列

 我来答
大沈他次苹0B
2022-06-29 · TA获得超过7268个赞
知道大有可为答主
回答量:3059
采纳率:100%
帮助的人:170万
展开全部
对于Fibonacci数列

我们可以采用递归以及非递归的方法对其进行求解。

下面分别用两种方法求解,并分析算法的时间复杂度。

输入 时,

输入 时,

假设 时 , 正确,

当 时, 正确。

So the correctness of Algorithm has been proved.

对于 来说,每个问题被分成了两个子问题。每分割一次,问题的规模线性减少。

对于每个节点来说,每个节点对应算法执行一次操作的时间复杂度为 。

二叉树的总层数为 , 所以我们可以近似认为

下面给出具体分析:

对于 :

尾部常数 4 代表 四次常数操作 (1 comparison, 2 subtractions, 1 addition)

我们可以发现 , 代入得:

所以lower bound我们说,

我们认为 , 因为

可得:

我们可以发现 , 代入得:

所以对upper bound我们说,

综上,该算法时间复杂度

首先,为A[0], A[1]赋值分别需要两个 的操作。

对于循环部分,时间复杂度为 。

所以

综上,迭代方法求解Fibonacci的时间复杂度为

最初发布在我的 个人博客 上。欢迎访问。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式