SóProvas


ID
2614558
Banca
COPERVE - UFSC
Órgão
UFSC
Ano
2018
Provas
Disciplina
Programação
Assuntos

    Para a questão, considere a existência de uma linguagem de programação fictícia, chamada “K”, que possui os seguintes comandos:

• comando de atribuição, que atribui um valor a uma variável. Por exemplo, na linha “v1 = v2 + v3”, o comando está sendo usado para atribuir um valor para a variável v1, sendo esse valor o resultado da soma dos valores das variáveis v2 e v3;
• comando de seleção, que executa um comando caso o valor de uma expressão seja verdadeiro. Por exemplo, na linha “se (v1 == 5) {v2 = 7}”, o comando de atribuição será executado somente se a expressão “v1 == 5” for verdadeira, ou seja, se o valor da variável v1 for igual a 5;
• comando de repetição, que executa um comando exatamente N vezes. Por exemplo, na linha “repita 5 vezes {v1 = v1 + 3}”, o comando de atribuição será executado cinco vezes;
• comando de repetição, que executa um comando enquanto uma expressão for verdadeira. Por exemplo, na linha “enquanto (v1 <= 6 E v2 == 3) {v1 = v1 - 3}”, o comando de atribuição será executado enquanto as expressões “v1 <= 6” e “v2 == 3” forem verdadeiras, ou seja, enquanto o valor da variável v1 for menor ou igual a 6 e o valor da variável v2 for igual a 3.

Considere o seguinte procedimento recursivo p, escrito na linguagem K:


procedimento p (n) {

se (n < 5)

retorne n

retorne p(n - 3)

}


v1 = p(3)

v2 = p(8)


Sabendo que o valor de v1 é 3, qual é o valor de v2?

Alternativas
Comentários
  • LETRA B

    Mano eu tenho muitas dificuldades em resolver questões de recurvidade, uma dica que dou para a galera é a seguinte:

    Tentem trocar a recursividade por um laço ITERATIVO.

    procedimento p (n) {
        se (n < 5)
            retorne n
        retorne p(n - 3)
    }


    procedimento p (n) {
        int r = n
        While (r < 5)
            r - 3
        retorne r
    }

  • p(8) = p(5)

    p(5) = p(2)

    p(2) = 2