Академический Документы
Профессиональный Документы
Культура Документы
Exerccios
1) Identifique um algoritmo recursivo para:
a) Encontrar a soma de um vetor.
b) Calcular o n-simo numero de uma PG(progresso geomtrica) dada
uma entrada qualquer de um elemento inicial e uma razo.
c) Encontrar recursivamente a potncia m de um numero n.(ou seja n m)
2) Identifique o critrio de parada de cada um dos itens anteriores
3) Qual o valor de X (4)?
int X (int n) {
if (n == 1 || n == 2) return n;
else return X (n-1) + n * X (n-2);
}
4) Qual o valor de f (1,10)? Escreva uma funo equivalente que seja mais
simples.
double f (double x, double y) {
if (x >= y) return (x + y)/2;
else return f (f (x+2, y-1), f (x+1, y-2));
}
5) Qual o resultado da execuo do programa abaixo?
int ff (int n) {
if (n == 1) return 1;
if (n % 2 == 0) return ff (n/2);
return ff ((n-1)/2) + ff ((n+1)/2);
}
int main (void) {
printf ("%d", ff(7));
return EXIT_SUCCESS;
}
6) Execute fusc (7,0).
int fusc (int n, int profund) {
int i;
for (i = 0; i < profund; ++i)
printf (" ");
printf ("fusc(%d,%d)\n", n, profund);
if (n = 1)
return 1;
if (n % 2 == 0)
return fusc (n/2, profund+1);
return fusc ((n-1)/2, profund+1) + fusc ((n+1)/2, profund+1);
}
7) A funo de Fibonacci definida assim: F(0) = 0, F(1) = 1 e F(n) = F(n1) + F(n-2) para n > 1. Descreva a funo F em linguagem C. Faa uma
verso iterativa e uma recursiva.
8) Seja F a verso recursiva da funo de Fibonacci. O clculo do valor da
expresso F(3) provocar a seguinte sequncia de invocaes da funo:
F(3)
F(2)
F(1)
F(0)
F(1)
Qual a sequncia de invocaes da funo provocada por F(5)?
9) A seguinte funo calcula o maior divisor comum dos inteiros estritamente
positivos m e n. Escreva uma funo recursiva equivalente.
int Euclides (int m, int n) {
int r;
do {
r = m % n;
m = n;
n = r;
} while (r != 0);
return m;
}