【发布时间】:2018-10-23 21:34:46
【问题描述】:
public static void fun3(int i)
{
if(i<10)
{
fun3(i+1);
fun3(i+2);
System.out.println(i);
}
}
此代码的重复是:T(n)=T(n+1)+T(n+2)+O(9)
问题是这里的条件if(i<10)。其中i 可以向负侧增长到无穷大(例如 -1000 或 -287131287238238 等)。我需要使用递归树的时间复杂度。如何计算树的高度??
【问题讨论】:
-
你的方法什么也不返回。这是故意的吗?
-
是的!这是有意的
-
O(n) 估计 n 接近无穷大。在您的情况下,上限为 10(或任何其他最终数字),无论 n 变得多大,您都将拥有相同的成本。这导致 O(1)
-
看下面的答案:你的问题的表述方式是O(1),其实不管数字多高只要是最终的,其他的都是你可能拥有的内幕知识我们不
-
深度大约为 n - i,其中 n=10,但如果您只是想在纸上尝试一下(也适用于负 i),那将是显而易见的。这个例子也很糟糕,因为它会多次计算相同的路径
标签: algorithm data-structures time-complexity