我的打印三角形算法的时间复杂度是多少?
void print(int n) {
if (n < 0) return;
for (int k = n; k > 0; k--) {
out.printf("[*]");
}
out.println();
print(--n);
}
我认为它是O(n^2)
,因为我们遍历所有列和行。我对吗?但是,我对递归对算法的影响有些怀疑。
答案 0 :(得分:1)
第一次迭代有 n 步骤,第二次 n - 1,依此类推,直到1.你还记得,系列之和{1,2 ,..., n }是( n 2 + n )/ 2。 (证据是对归纳概念的标准介绍。)这确实是O( n 2 )。