Você está na página 1de 1

_______________________________________________________________________________________

LISTA DE EXERCÍCIOS – Funções recursivas


1 - Uma importante função teórica, conhecida como função de Ackerman, é definida como:
A(M, N) = N+1 se M = 0
A(M - 1,1) se N = 0
A(M - 1, A(M, N - 1)) caso contrário
Construir esta função utilizando recursividade.
2 - [Tremblay-Bunt] Um algoritmo muito conhecido para determinar o maior divisor comum de dois inteiros é
o algoritmo de Euclides. A função maior divisor comum é definida como segue:
MDC(M,N) = MDC(N,M) se N > M
M se N = 0
MDC(N, M mod N) se N > 0
Construir um subprograma recursivo para este problema.
3 - Verificar se uma palavra é palíndroma, utilizando uma função recursiva. A função recebe como parâmetro
uma string e retorna um inteiro (0 se não for políndroma e 1 se for).
4 - [Tremblay-Bunt] Considere o conjunto de todas as expressões aritméticas infixas válidas, completamente
entre parêntesis, que consiste em nomes de variáveis contendo apenas uma letra, um dígito e os quatro
operadores +, -, * e /. A seguinte definição recursiva especifica o conjunto de expressões válidas:
 qualquer variável com uma única letra (A - Z) ou um dígito é uma expressão infixa válida;
 se  e  são expressões infixas válidas, então ( +), ( - ), ( * ) e ( / ) são expressões infixas
válidas;
 as únicas expressões infixas válidas são aquelas definidas pelos dois itens anteriores.
Formular uma função recursiva que receba na entrada uma cadeia de símbolos e produza, um inteiro, que
indica se a expressão infixa é válida.

5 – Faça uma função recursiva que recebe um número inteiro e exibe os dígitos do número na ordem inversa.
Por exemplo, se o valor de entrada for 376, a função deveria exibir 673.

6- Faça uma função recursiva que recebe um número inteiro como parâmetro e que retorna o número de
dígitos que o número possui.

7-Faça uma função recursiva que recebe um número inteiro omo parâmetro e que retorna a soma dos seus
dígitos. Por exemplo, se a entrada for 243, a função deve retornar 9.

8-Faça uma função recursiva que recebe um vetor de inteiros, um certo valor n e o tamanho do vetor e que
retorna quantas vezes o valor n aparece no vetor.

9-Faça uma função recursiva que recebe como parâmetro um vetor de números inteiros, um valor n que
representa o número de elementos que ele possui e que retorna a quantidade de números pares contidos no
vetor.

10 - Faça uma função recursiva que recebe uma string que representa uma fórmula matemática parentisada e
que retorna 1 caso a fórmula seja bem formada em relação ao posicionamento de parênteses e zero, caso
contrário.
Exemplos de fórmulas bem formadas:
((4+3)+4/5)-(3*2)
(9*(5-3))-(4/(9*8))/(8-13)
Exemplo de fórmulas mal formadas:
((5*7)-6

Você também pode gostar