Количество раз выполнения кода 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.

Другие вопросы по тегам