数据结构02 - 斐波那契(Fibonacci)数列问题分析

 我来答
舒适还明净的海鸥i
2022-06-01 · TA获得超过1.7万个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:66.8万
展开全部

已知K阶斐波那契数列序列定义为

试编写求k求k阶斐波那契数列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。

分析:
显然各项值须依次递推的方式逐个求出, 每次计算,均只需前k个值。
关键:如何存储这k个值,当新的项计算出来后,存放在哪里。
辅助数据结构:int f[m]; 每个值都占用一个数组元素

STEP 1

如图,针对规模为m的问题,系统需要提供长度为m的数组;其中第i个元素的值由下标为[i-k: i-1]中的元素累加而来,且段落[0: i-k-1]的数组元素不参与计算,故可以将整个数组截短为长度为k的循环数组;

STEP 2

数组结构:

循环

新环状结构的数组的下标的计算:

这样我们将辅助空间的大小从m优化为了k。

STEP 3

从step2可知,下标为i的位置存放的元素f[i]是f[i-k:i-1]个元素的和,同理可知下标为f[i+1]的元素的和为f[i-k+1: i]的和;故可推知f[i+1]与f[i]的关系为

这样可以将辅助空间数组的大小从k进一步优化为3。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式