Informática, perguntado por predugarciap0m5qy, 11 meses atrás

Quanto vale x no final da execução do seguinte trecho de código?

x=0;
for(i=1; i<=n; i++)
for(j=i; j<=n; j++)
x++;

(a) n
(b) n³
(c) n-1
(d) (n²-n)/2
(e) n(n+1)/2

Soluções para a tarefa

Respondido por bokomoko
1
resposta é (e) n(n+1)/2

Porque ? 
o primeiro for causa que i  vai variar de 1 a n, portanto temos que n * (alguma coisa) que está dentro do for

dentro do for temos um outro loop em que j vai variar de i a n. Se fosse de 1 a n teríamos n*n (n²) porém porém como começa do i, o segundo loop vai diminuindo 
i = 1 , j varia de 1 a n  , ou seja n vezes
i = 2 , j varia de 2 a n , 
ou seja n-1 vezes
i = 3 , j varia de 3 a n , 
ou seja n-2 vezes
i=n-1, j varia de n-1 a n , 
ou seja 2 vezes
i = n,  j varia de n a n=1, 
ou seja 1 vez

Se observar bem, entre n e 1 quantos números temos ? temos (n -1 + 1) = n
Entre n e 2 ? temos (n - 2 + 1) = n-1 vezes e não n-2, portanto, temos um n a mais, isso explica porque n* (n+1)

Porque o /2 ? Porque uma vez que começamos o loop interno a partir de n, estamos eliminando o j = de 1 a n-1 que já foi feito no loop anterior por isso dividimos por 2




Perguntas interessantes