Если бы у вас было
void programB(int n) {
long prod = 1;
for (int c=1;c<=n;c=c+1)
prod = prod * c;
это будет проходить через n
вещи, так что будьте O (n).
С
void programB(int n) {
long prod = 1;
for (int c=1;c<=n;c=c+1)
for (int c=1;c<=n;c=c+1)
prod = prod * c;
это проходит через n
вещи для каждой из n
вещей, давая вам O (n ^ 2)
Чтобы получить n ^ 3, вам нужен еще один цикл for:
void programB(int n) {
long prod = 1;
for (int c=1;c<=n;c=c+1)
for (int c=1;c<=n;c=c+1)
for (int c=1;c<=n;c=c+1)
prod = prod * c;
Ваш кейс не выполняет все действия n
, так как он скачет с шагом c=c*3
), давая силы три, как показано в ответе Кабануса: 1, 3, 9, 27 ...
Это дает вам log_3 n или O (log (n)) - поскольку база не имеет значения.