Количество раз выполнения кода 2 будет отличаться?
Интересно, сколько раз будет выполнен 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); }
Точная сложность этого фрагмента кода O(n*(n+1)), и я хочу узнать, почему вместо (n * n) (n + 1)
2 ответа
Неважно, какой вы используете, вывод программы будет идентичным; i++
а также ++i
не являются условиями расторжения в for
цикл, но операторы оцениваются в конце каждой итерации.
Обратите внимание, что ++i
никогда не будет медленнее, чем i++
; концептуально копия объекта должна быть взята для последнего. Хороший компилятор оптимизирует копию, хотя.
И точка стиля: пожалуйста, сделайте отступ sum = sum + i;
; трудно читать иначе.
Я думаю, что сложность кода кода O(n^2). Это не имеет значения о цикле для n+1 по сложности. O(n+1) = O(n-1) = O(n), поэтому все они одинаковы, и можно сказать, что сложность равна n^2.