【发布时间】:2012-10-11 16:08:05
【问题描述】:
有什么方法可以知道在当前机器上计算第 n 个斐波那契数需要多少时间?例如,在当前机器上,第 30 个元素的计算时间为 67 毫秒,第 40 个元素的计算时间为 554 毫秒。如何计算第 99 个元素的时间?
int fib(int n)
{
if( n <= 2)
return 1
else
return fib(n-1) + fib(n-2)
}
更新
Fibonacci Nth vs ms(当前 pc 计算第 n 个斐波那契元素所用的时间,以 ms 为单位的时间) http://pastebin.com/PGnd54Hq
Matlab: 代码 http://pastebin.com/L9CH53Pf
如何找出第 N 个元素的时间?
【问题讨论】:
-
“当前机器”是什么意思?这个问题有点不清楚。此外,任何类型的估计都取决于它是哪种算法。是尾递归吗?每次调用都推送一个堆栈帧吗?你对这个问题有什么看法?
-
我的机器-当前运行递归算法的PC。可能另一种可能的解决方案是找出(总共)需要多少步骤并将其乘以一个步骤的时间。但是如何计算一步所需的时间呢?
标签: algorithm complexity-theory fibonacci