知道计算斐波那契数列第n项的最快的Java算法是什么吗?
我找到these algorithms了。我猜迭代算法应该比递归和分析算法更快。
发布于 2012-03-31 01:16:45
预先计算直到足够大的n的所有Fibonacci数,并生成源代码片段,用可以容纳这些数字的类型中的数字定义一个数组。
然后,您可以只检索数组中索引n中的值。这是O(1)。没有比这更快的了。
发布于 2012-03-31 01:12:59
试试dynamic programming。创建一个保存第n-1个Fibonacci数的每个值的数组。第一次运行时,它花费的时间与普通Fibonacci函数一样长,但后续调用可以在O(1)中运行,因为数组中已经有了这个值。
发布于 2012-03-31 01:14:12
根据我的经验,分析版本在实践中通常非常快,但正如Rosetta代码所指出的那样,它只能准确到序列中的第92个数字。
递归版本需要指数时间来运行,所以即使对于中等大小的n,它也必然非常慢。迭代和尾递归函数在n中线性时间。可以从斐波那契序列的matrix form推导出更快的O(lg )时间算法。
有关递归和尾递归算法的说明,请参阅SICP。
https://stackoverflow.com/questions/9947437
复制相似问题