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

-6

Решение

Неважно, какой вы используете, вывод программы будет идентичным; i++ а также ++i не являются условиями расторжения в for цикл, но операторы оцениваются в конце каждой итерации.

Обратите внимание, что ++i никогда не будет медленнее, чем i++; концептуально копия объекта должна быть взята для последнего. Хороший компилятор оптимизирует копию, хотя.

И точка стиля: пожалуйста, сделайте отступ sum = sum + i;; трудно читать иначе.

1

Другие решения

Я думаю, что сложность кода кода O (n ^ 2). Это не имеет значения о цикле для n + 1 по сложности. O (n + 1) = O (n-1) = O (n), поэтому все они одинаковы, и можно сказать, что сложность равна n ^ 2.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector