Skip to content

Latest commit

 

History

History
39 lines (31 loc) · 1.14 KB

File metadata and controls

39 lines (31 loc) · 1.14 KB

Pergunta

46 - Indica o que é impresso no ecrã pelo seguinte código. Justifica a tua resposta.

static void Main(string[] args)
{
    Console.WriteLine(MetodoRecursivo(5));
}

static int MetodoRecursivo(int n)
{
    if (n == 0)
        return 0;
    else if (n % 2 == 0)
        return 3 + MetodoRecursivo(n - 1);
    else
        return 2 + MetodoRecursivo(n - 1);
}

Soluções

Solução 1

  • O que é impresso no ecrã é o seguinte: "12".
  • O método recursivo recebe um int n = 5, e procede com o código onde:
    • Neste caso corresponde à ultima condição (else) que devolve 2 + MetodoRecursivo(4)
    • MetodoRecursivo(4) satisfaz a 2ª condição (else if) que retorna 3 + MetodoRecursivo(3)
    • MetodoRecursivo(3) satisfaz a 3ª condição (else) que retorna 2 + MetodoRecursivo(2)
    • MetodoRecursivo(2) satisfaz a 2ª condição e retorna 2 + MetodoRecursivo(1)
    • MetodoRecursivo(1) satisfaz a 3ª condição e retorna 3 + MetodoRecursivo(0)
    • Esta última retorna 0.
  • Assim sendo é só fazer os cálculos: 2+3+2+2+3+0 = 12.

Referências: Rafael Silva

Por Rodrigo Marques