【发布时间】:2015-03-30 15:31:13
【问题描述】:
我需要知道这两段代码的复杂度。
public static int Sum(int x, int y){
return y*(y+1)/2 - (x-1)*x/2;
}
public static int RecSum(int x, int y){
if (x < y+1)
return x + RecSum(x+1, y);
else
return 0;
}
我认为 Sum 是 O(n^2) 而 RecSum 是 O(n)。
我说的对吗?
【问题讨论】:
-
这是作业吗?
-
这取决于 n 是什么
-
您的第二种方法应该运行一次或永远运行。
-
@SashaSalauyou,第一个是 O(1),但第二个不是,因为它是递归的。 (第二个是 O(y)。)
-
@JohnBollinger 是的,我的错。 O(n)
标签: java time-complexity