E05.0 Que tipos de problemas um algoritmo recursivo é capaz de resolver?
E05.1 Problema: Dado um inteiro x e um vetor a[0..n-1] de inteiros, encontrar j tal que a[j] == x. Escreva uma função recursiva que resolva o problema.
E05.2 Problema: apagar todos os caracteres # de um vetor de caracteres c[0..n-1]. Exemplo: Se n vale 7 e o vetor contém a b c # # d # então o resultado deve ser a b c d . Escreva uma função recursiva para resolver o probema.
E05.3 Considere a seguinte função recursiva. Primeiro, diga o que a função faz. Depois, critique o código.
int maxR (int n, int v[]) { int x; if (n == 1) return v[0]; if (n == 2) { if (v[0] < v[1]) return v[1]; else return v[0]; } x = maxR (n-1, v); if (x < v[n-1]) return v[n-1]; else return x; }
. . - . -- . - . --- . - . -- . - . ---- . - . -- . - . --- . - . -- . - .
E05.4
Problema:
imprimir uma régua inglesa de ordem n
no intervalo [0..2n].
O traço
no ponto médio da régua deve ter
comprimento n,
os traços nos pontos médios dos subintervalos
superior e inferior devem ter comprimento n−1;
e assim por diante.
A figura mostra uma régua de ordem 4.
Escreva uma função recursiva que resolva o problema.