【发布时间】:2013-03-14 19:56:59
【问题描述】:
private void listAll( int depth )
{
printName( depth ); // Print the name of the object
if( isDirectory( ) )
for each file c in this directory (for each child)
c.listAll( depth + 1 );
}
我尝试使用递归关系来诱导运行时间
正确的运行时间是 O(N)
我的分析表明它将是 O(N^2)
这是我的归纳
1. T(0) = (第一行) O(1)+(第二行) O(1)+(我们假设的孩子数是N) N*(T(1)
2. T(0) = (第一行) O(1)+(第二行) O(1)+ N*(O(1)+O(1)+ N*(T(2))
3 随着这种归纳的进行,运行时间将是某种 O(N^2)
我的分析有什么问题???
【问题讨论】:
-
你是如何计算你的运行时间的?
-
为什么会是指数级的?有 N 个文件。
-
这里的
N是什么? -
看起来你在 T(1) 方面找到 T(0),然后在 T(2) 方面,等等。但这不是倒退吗?难道你不应该根据 T(0) 找到 T(1),并根据 T(1) 和/或 T(0) 找到 T(2) 吗?
-
N 乘以 N 的部分。里面没有说“对于每个 N,我们必须运行 N 次”;你永远不会重复任何事情。
标签: java performance algorithm analysis recurrence