数据结构02 - 斐波那契(Fibonacci)数列问题分析
1个回答
展开全部
已知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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询