
paulo1205
(usa Ubuntu)
Enviado em 14/02/2017 - 14:45h
Seu programa continua não fazendo sentido: claramente alta um pedaço do comando
for. E não deu para entender direito o que são “
2^( x 19 )” e “
3^( x 19 )+ 1” (principalmente o sinal de “^” nessas expressões).
Por acaso você está misturando no mesmo texto perguntas e respostas?
Dezenove poderia ser o número de iterações do
for, mas somente se estivesse escrito “
for(i=1; i<I; i++)” (observe as partes em negrito, que faltaram na sua postagem), levando em consideração a linha anterior, que diz que I=20 (aliás, esse I maiúsculo é meio complicado, pois parece um L minúsculo com a fonte default do VoL).
Mas esse resultado ainda pode estar errado porque ainda pode estar faltando algum pedaço. Eu não sei se o programa deveria ser o primeiro o segundo caso mostrados abaixo.
I=20;
for(i=1; i<I; i++)
if(i==I){
/* bla, bla, bla */
}
if(i<I){
/* ble, ble, ble */
}
I=20;
for(i=1; i<I; i++){
if(i==I){
/* bla, bla, bla */
}
if(i<I){
/* ble, ble, ble */
}
}
Se for o primeiro caso, serão 20 comparações feitas pelo próprio
for (condição de parada), 19 comparações no primeiro
if (dentro do laço de repetição) e uma comparação no segundo
if (após o final do laço). Além disso, o valor de
i será incrementado 19 vezes.
Se for o segundo caso, são 20 comparações da condição de parada do
for e 19 comparações para cada
if. Também continuam sendo 19 incrementos de
i.
Em todo caso a complexidade de ambos é linear, proporcional ao próprio número de iterações do laço de repetição. Uma forma de indicar isso é dizer que a complexidade é da ordem O(n).