我不太擅长优化问题或原理,但问老师在课堂上问的问题似乎很有趣。考虑到执行时间,哪个选项更好,或者 n 有多大重要?
数学方法:
int sum=n*(n+1)/2;
迭代方法:
int sum=0;
for(int i=1;i<=n;i++)
sum=sum+i;
我在 C 中尝试了两种方法,但执行时间不断变化,这对我来说有点奇怪。
int sum = n * (n + 1) / 2;
这是一个以 O(1) 时间复杂度执行的数学运算。 这里所花费的时间是恒定的,与大小无关 𝑛 n,因为它不涉及任何迭代
int sum = 0;
for (int i = 1; i <= n; i++) {
sum = sum + i;
}
这涉及到一个执行循环 𝑛 n次。 时间复杂度为 O(n),因为操作数量随 𝑛