【发布时间】:2013-11-19 10:31:24
【问题描述】:
我想知道这 2 段代码将执行多少次。都是n次还是其中一个是n+1?
int sum=0;
for (int i = 1; i <= n; i++)
sum = sum + i;
与
int sum=0;
for (int i = 1; i <= n; ++i)
sum = sum + i;
有人帮我吗?
编辑 因为我得到了这么多,不好的评论。我决定说出我真正的意图来问这个问题。
int sum = 0;
for (int i = 1; i <= n; ++i)
sum = sum + f1(i, n);}
int f1(int x, int n) {
int sum = 0;
for (int i = 1; i <= n; i++)
sum = sum + i;
return (x + sum); }
这段代码sn-p的确切复杂度是O(n*(n+1)),我想知道为什么有(n+1)而不是o(n*n)
【问题讨论】:
-
你连测试都没有?
-
问问自己,如果 n 为 1,答案是什么。顺便说一句,您应该缩进
for循环控件(即sum = …)。 -
@R.MartinhoFernandes 我测试了它,根据我的说法,它们会同时执行。但是这个问题的编辑版本的确切复杂度是 O(n*(n+1)),我想知道 1 是哪里来的。
-
@MitchWheat 那么,那是什么=
-
我认为是 O(nn)。顺便说一句,O(n*(n+1)) 和 O(nn) 没有区别。
标签: c++ code-analysis execution-time