Dada a função X definida a seguir: function X (n,m : INTEGER...

Próximas questões
Com base no mesmo assunto
Q4282190 Algoritmos e Estrutura de Dados
Dada a função X definida a seguir:
function X (n,m : INTEGER) : INTEGER;
         BEGIN                 IF (n = m) or (m=0)                        thenX: =1                        elseX:=X(n-1,m+Xn-1m-1)   END;

Qual o valor de X(5,3)? 
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: D

Fundamento decisivo: O ramo ELSE está corrompido; reconstruí-lo como X(n-1,m) + X(n-1,m-1) sustenta o gabarito D.

Tema central: Avaliação de função recursiva
Análise das alternativas
A
Errada
Sob a reconstrução indicada, as chamadas que compõem X(5,3) valem 4 e 6. Sua soma é 10, não 5.
B
Errada
O valor 6 é o resultado intermediário X(4,2). Ele não encerra o cálculo solicitado: ainda é necessário somar X(4,3) = 4.
C
Errada
A recorrência reconstruída exige somar X(4,3) = 4 e X(4,2) = 6. Essas parcelas produzem 10, não 8.
D
Certa
A alternativa D resulta da aplicação da recorrência reconstruída, com retorno 1 quando n = m ou m = 0. Nessa interpretação, X(3,1) = X(3,2) = 3; assim, X(4,3) = X(3,3) + X(3,2) = 1 + 3 = 4 e X(4,2) = X(3,2) + X(3,1) = 3 + 3 = 6. Somando as duas chamadas exigidas, X(5,3) = 4 + 6 = 10. Esse cálculo depende da reconstrução indicada: o ramo ELSE, exatamente como transcrito, não permite confirmar a expressão sem ressalva.
E
Errada
O valor 13 não coincide com a soma das duas chamadas da recorrência reconstruída: X(5,3) = X(4,3) + X(4,2) = 4 + 6 = 10.
Pegadinha da questão
O valor 6 pode levar à interrupção prematura do cálculo, pois corresponde apenas a X(4,2). Além disso, não se deve tratar o ramo ELSE corrompido como inequívoco: o resultado oficial depende da reconstrução explicitada.
Dica para questões semelhantes
  • Verifique os casos-base antes de expandir uma chamada: nesta função, n = m ou m = 0 determina retorno 1.
  • Quando a recorrência soma duas chamadas, calcule ambas antes de atribuir o resultado à chamada original.
  • Se o código estiver corrompido, explicite a reconstrução adotada e condicione a conclusão a ela; não apresente o resultado como execução literal do trecho.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Deepseek
"Traduzindo o pseudocódigo para JavaScript

O pseudocódigo da imagem tem uma sintaxe um pouco confusa (parece Pascal com alguns erros de digitação). Vou interpretar e traduzir para JavaScript.

Interpretação do pseudocódigo

text

function X (n, m : INTEGER) : INTEGER;
BEGIN
IF (n = m) or (m = 0)
then X := 1
else X := X(n-1, m + X(n-1, m-1)) // provável interpretação
END;

⚠️ A linha else X:=X(n-1,m+Xn-1m-1) está truncada na imagem. As leituras mais prováveis são:

  • X(n-1, m + X(n-1, m-1)) — aninhamento de chamadas

  • X(n-1, m) + X(n-1, m-1) — soma de duas chamadas (recorrência clássica tipo binomial)

A segunda é a interpretação mais natural em exercícios de recursão (relação de Pascal), então vou mostrar as duas.

Versão 1 — Interpretação mais provável (soma de duas chamadas)

javascript

function X(n, m) {
if (n === m || m === 0) {
return 1;
}
return X(n - 1, m) + X(n - 1, m - 1);
}

Essa função calcula o coeficiente binomial C(n, m) — o mesmo usado em triângulo de Pascal."

Não sei se tem uma forma eficiente de fazer isso, mas eu fiz até chegar ao caso base

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo