SóProvas


ID
2626621
Banca
CESPE / CEBRASPE
Órgão
ABIN
Ano
2018
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Julgue o item subsequente, relativo à lógica de programação.


O pseudocódigo a seguir, após executado, apresentará como resultado 13.

funcao X (n) {

    se (n == 1 ou n == 2) então

        retorne n;

     senão

        retorne X (n-1) + n * X (n-2);

}

escreva X(4);

Alternativas
Comentários
  • Este algoritmo é recursivo e deve-se executar a função até chegar ao caso básico (se (n == 1 ou n == 2))  para depois retornar os valores.

     

    X(4) = X(3) + 4 * X(2)
    X(3) = X(2) + 3 * X(1)
    X(2) = 2
    X(1)  = 1

    X(3) = 2 + 3  = 5
    X(4) = 5 + 4 * 2
    X(4) = 5 + 8 = 13

  • Encontrei a resolução dessa questão em vídeo em:

    https://youtu.be/03xrxVI1xq4

  • E fica aquela dúvida: tem alguma forma mais fácil?

  • n = 4

     

    se "n" é igual a 1 ou "n" é igual a 2 RETORNE n //como n é 4 então "n" não vai ser retornado

     

    senão

     

    retorne x(4-1) + 4 * x(4-2) 
               x3 + 4 * x2

     

    o valor de n agora será 3, vamos fazer o mesmo procedimento:

    se n é igual a 1 ou n é igual a 2 RETORNE n  //como "n" é 3 então "n" não vai ser retornado.

     

    senão

     

    retorne x(3-1) + 3 * x(3-2)  //agora vou resolver o restante da operação de cima q encontramos o 3.
    x(3-1) + 3 * x(3-2) + 4 * x(2)
    x2 + 3 * x1 + 4 * x2  //agora sim, a condição é 2, igual ao que se pede no início, lembra?:  (n == 1 ou n == 2
    2 + 3 * 1 + 4 * 2
    2 + 3 + 8
    13

  • Rodrigo Marcelo, valeu pela contribuição. Depois que assistir ao vídeo, entendi a questão.

  • So fui entender com o comentario do rodrigo costa...simples e direto

  • So fui entender com o comentario do rodrigo costa...simples e direto

  • A função X é uma função relativamente simples.

    Se o parâmetro passado for 1 ou 2, ela retorna o próprio parâmetro; caso contrário, o seu retorno é a própria função diminuída de 1 acrescida de n multiplicado pela própria função diminuída de 2. É a famosa RECURSIVIDADE, na qual a função chama a si mesma!

    Vamos lá:

    X(4), portanto, tem como resultado X(3) + 4*X(2).

    E agora?

    Vamos fazer uma parte de cada vez!

    X(3)

    X(3) é igual a X(2) + 3*X(1).

    X(2) e X(1) são conhecidos! X(2) é igual a 2 e X(1) é igual a 1.

    Logo, X(3) é tem como resultado 2 + 3*1 , que é igual a 5.

    X(4), portanto, tem como resultado 5 + 4*X(2).

    E, como X(2) é igual a 2,

    X(4) tem como resultado 5 + 4*2, que é igual a 13.

    Item correto.

  • A função X é uma função relativamente simples.

    Se o parâmetro passado for 1 ou 2, ela retorna o próprio parâmetro; caso contrário, o seu retorno é a própria função diminuída de 1 acrescida de n multiplicado pela própria função diminuída de 2. É a famosa RECURSIVIDADE, na qual a função chama a si mesma!

    Vamos lá:

    X(4), portanto, tem como resultado X(3) + 4*X(2).

    E agora?

    Vamos fazer uma parte de cada vez!

    X(3)

    X(3) é igual a X(2) + 3*X(1).

    X(2) e X(1) são conhecidos! X(2) é igual a 2 e X(1) é igual a 1.

    Logo, X(3) é tem como resultado 2 + 3*1 , que é igual a 5.

    X(4), portanto, tem como resultado 5 + 4*X(2).

    E, como X(2) é igual a 2,

    X(4) tem como resultado 5 + 4*2, que é igual a 13.

    Gab. Certo.

    .

    Fonte. Victor Dalton

  • Pra quem não é programador como eu, consegui resolver assim:

    Comando da questão: escreva X(4). Resultado tem que dar 13.

    ___________

    Quando n=4:

    X (n-1) + n * X (n-2)

    X (4-1) + 4 * X (4-2)

    X (3) + 4 * X (2) // quando n=2, retorna seu próprio valor, como afirma na questão. Logo x(2) retorna 2.

    X (3) + 4 * 2

    X (3) + 8

    Obs: não sabemos quanto é X (3), ou seja, quando o n=3. Vamos calcular?

    ___________

    Quando n=3:

    X (n-1) + n * X (n-2)

    X (3-1) + 3 * X (3-2)

    X (2) + 3 * X (1) // quando n=2, retorna 2, quando n=1, retorna 1. Logo x(2) retorna 2, x(1), retorna 1.

    2 + 3 * 1

    2 + 3 = 5

    Agora sabemos o valor quando n=3, que da 5. Basta substituir na função lá de cima:

    X (3) + 8

    5 + 8 = 13

    Gabarito: CORRETO.

    Pra mim ficou bem mais fácil entender, espero ter contribuido.

  • Força Guerreiro!!!!!!