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