A m,n - Othon Batista

Propaganda
Universidade Salvador
Bacharelado em Ciência da Computação
Estrutura de Dados
Prof. Othon M. N. Batista
Aluno:_________________________________________________________________
Exercício – Recursividade
Para cada questão desse exercício, um programa principal deve ser feito para testar a respectiva função ou
procedimento feito.
1. Faça uma função recursiva e outra iterativa em Pascal que calculam o fatorial de um número. Chame as
funções em um programa principal e verifique até que valor de entrada cada função funciona. Lembre-se
que Fatorial (0) = Fatorial (1) = 1 e Fatorial (n) = n * Fatorial (n – 1).
2. A combinação de elementos está relacionada com recursividade através da relação:
 n−1 
 mn =n−1

m
m−1
Vale lembrar que Cn,0 = Cn,n = 1. Implemente esta relação em Pascal utilizando recursividade.
3. A função de Fibonacci é definida recursivamente:
{
0, se x=0
F  x= 1, se x=1
F  x−1 F  x−2 , se x2
}
Implemente a função de Fibonacci em Pascal usando recursividade.
4. Faça uma função recursiva em Pascal que:
4.1. retorna o comprimento de uma cadeia de caracteres;
4.2. calcula o máximo divisor comum (mdc) de um número inteiro;
4.3. calcula a raiz quadrada de um número real;
4.4. implementa a pesquisa binária em um vetor com n posições;
4.5. soma os elementos de um vetor de números inteiros.
5. A função de Ackerman A (m, n) está definida como:
{
n1, se m=0
A m , n= Am−1, 1 , se n=0 e m0
Am−1, Am , n−1 , se m0 e n0
}
5.1. implemente a função de Ackerman em Pascal com recursividade;
5.2. implemente a função de Ackerman em Pascal sem recursividade;
5.3. qual o valor de Ackerman (3, 2)?
6. Há 3 torres e 64 discos com diâmetros distintos, dispostos um sobre o outro na primeira torre. Os discos
estão empilhados e ordenados com o menor disco em cima e o maior embaixo. Monges devem mover os
discos da primeira torre para a terceira torre obedecendo regras: (1) apenas um disco pode ser movido por
vez; (2) um disco não pode ser colocado sobre outro que tem o diâmetro menor. Escreva um procedimento
recursivo em Pascal que resolve o problema e imprime a sequência correta de movimentos.
Download