Escreva uma função recursiva que calcule a soma de dois números naturais, através de incrementos sucessivos (Ex.: 3 + 2 = ++(++3)).

Passo 1

O problema pede uma função recursiva que calcule a soma de dois números naturais através de incrementos sucessivos. O conteúdo aqui é recursão simples, com um caso base (quando um dos somandos é zero) e um caso recursivo (incrementar um somando e decrementar o outro).

Passo 2

Identificamos o caso base da recursão: se o segundo número b for zero, não há mais incrementos a fazer, então a soma de a com 0 é simplesmente a.
No caso recursivo, enquanto b\neq0, realizamos um incremento em a e um decremento em b. Logo,
\text{soma}(a,b) = \text{soma}\bigl(a+1,\;b-1\bigr).

Passo 3

Para ilustrar com o exemplo 3+2:
\begin{aligned} \text{soma}(3,2) &= \text{soma}(4,1),\\\ \text{soma}(4,1) &= \text{soma}(5,0),\\\ \text{soma}(5,0) &= 5. \end{aligned}

Passo 4

Implementação em linguagem C (estrutura semelhante em outras linguagens):
int soma(int a, int b) {
    if (b == 0)
        return a;
    else
        return soma(a + 1, b - 1);
}

Resposta

int soma(int a, int b) {
    if (b == 0)
        return a;
    else
        return soma(a + 1, b - 1);
}

Exercícios relacionados