首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算斐波那契数列第n项的最快Java算法?

计算斐波那契数列第n项的最快Java算法?
EN

Stack Overflow用户
提问于 2012-03-31 01:09:13
回答 5查看 7.4K关注 0票数 2

知道计算斐波那契数列第n项的最快的Java算法是什么吗?

我找到these algorithms了。我猜迭代算法应该比递归和分析算法更快。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-31 01:16:45

预先计算直到足够大的n的所有Fibonacci数,并生成源代码片段,用可以容纳这些数字的类型中的数字定义一个数组。

然后,您可以只检索数组中索引n中的值。这是O(1)。没有比这更快的了。

票数 4
EN

Stack Overflow用户

发布于 2012-03-31 01:12:59

试试dynamic programming。创建一个保存第n-1个Fibonacci数的每个值的数组。第一次运行时,它花费的时间与普通Fibonacci函数一样长,但后续调用可以在O(1)中运行,因为数组中已经有了这个值。

票数 2
EN

Stack Overflow用户

发布于 2012-03-31 01:14:12

根据我的经验,分析版本在实践中通常非常快,但正如Rosetta代码所指出的那样,它只能准确到序列中的第92个数字。

递归版本需要指数时间来运行,所以即使对于中等大小的n,它也必然非常慢。迭代和尾递归函数在n中线性时间。可以从斐波那契序列的matrix form推导出更快的O(lg )时间算法。

有关递归和尾递归算法的说明,请参阅SICP。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9947437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档