当前位置:首页 » 操作系统 » 斐波那契数列的递归算法

斐波那契数列的递归算法

发布时间: 2024-05-04 14:34:55

⑴ [数据结构与算法分析]斐波那契数列递归算法时间复杂度为多少

longfab(longn)
{
if(n<2)return1;
returnfab(n-1)+fab(n-2);
}

简单推断一下,当n>2时,递归调用的次数call_fab(n) = 2*fab(n) - 1,再简单证明一下。

用call_fab(n)代表递归调用的次数

n = 3时,调用fab(3),会递归调用fab(1)和fab(2),而fab(1)和fab(2)只需要调用一次,加上本身一次,一共调用3次,而fab(3) = 2,3 = 2 * 2 - 1,满足推断

n = 4时,fab(4) = fab(3) + fab(2),所以call_fab(4) = 1 + call_fab(3) + call_fab(2) = 5

fab(4) = 3,满足5 = 3 * 2 - 1

同理n=5也可以简单计算得出,这样我有连续3个结果,作为归纳法证明的基础

假设n = k(k >= 5)成立,即

fab(k) = fab(k-2) + fab(k - 1),有call_fab(k) = 2fab(k) - 1

那么当n=k+1时,fab(k+1) = fab(k - 1) + fab(k),

call_fab(k+1) = 1 + call_fab(k - 1) + call_fab(k) = 1 + 2fab(k-1) - 1 + 2fab(k) - 1

= 2(fab(k-1) + fab(k)) - 1 = 2fab(k+1) - 1,归纳法得证。

所以,对于大于2的整数n,其斐波那契数列递归算法的调用次数为2*n的斐波那契数列值 - 1,故答案是D,时间复杂度和该数列是一致的。

热点内容
c语言发短信 发布:2024-05-18 13:23:08 浏览:833
vb数据库程序 发布:2024-05-18 13:01:57 浏览:111
新建文件夹2免费手机 发布:2024-05-18 12:56:13 浏览:365
自己在家搭建服务器有水冷散热吗 发布:2024-05-18 12:47:27 浏览:649
旧版的安卓手机怎么使用微信 发布:2024-05-18 12:46:36 浏览:467
我的世界服务器开多久 发布:2024-05-18 12:45:32 浏览:593
vba获取网页表格数据库数据库数据库 发布:2024-05-18 12:23:24 浏览:700
腾讯服务器为什么卡顿 发布:2024-05-18 12:02:12 浏览:306
如何知道密码锁有没有nfc 发布:2024-05-18 11:58:09 浏览:962
单片机c语言模块化编程 发布:2024-05-18 11:53:16 浏览:645