Sunteți pe pagina 1din 3

Programao Estruturada II

Recursividade Exerccios Propostos

Todas as questes devem ser respondidas tendo como base a linguagem C, vista na
disciplina.

1. Leia um nmero e calcule recursivamente a soma de 0 at o nmero lido.

Ex: Numero lido 3 Exibir:

3+2+1+0=6

2. Leia um nmero e calcule recursivamente a soma de 0 at o nmero lido. Exibir o


resultado parcial da soma.

Ex: Numero lido 2 Exibir:

2+1+ 0 Soma parcial = 1 Soma parcial = 3 Soma de 0 at 2 = 3

3. Fazer um programa que leia, some 2 valores inteiros e mostre o resultado da soma.
No final do programa, dever ter uma recursividade que chame novamente o programa
principal, mostre a mensagem Digite 1 se desejar executar o programa novamente,
caso positivo, executar o programa novamente caso negativo, terminar a execuo do
programa.

4. Analise o cdigo abaixo e responda:

a) O que esse programa faz?

b) Existe recursividade Direta ou indireta nele? Justifique.


#include<stdio.h>
#include <stdlib.h>

int funcao(int x) {
printf( "\n %d", x);
if(abs(x) < 10 )
return 1;
else
return(1 + funcao(x/10));
}

int main() {
int num;
num=10145;
printf(" \n Total: %d \n", funcao(num));
system ("pause");
}

5. A srie Fibonacci pode ser definida da seguinte maneira: Fib(n) = n , para n=0 ou n=1
Fib(n) = fib(n-1)+fib(n-1), para n > =2

a) E possvel definir uma rotina recursiva fib(n) tal que ela imprima os n termos da
srie Fibonacci? Se for, apresente o algoritmo; seno explique por que no possvel.

b) Seja f(n) uma funo que retorna o n-simo termo da srie Fibonacci. Defina para
f(n) uma funo recursiva e outra interativa e compare, sucessivamente o tempo gasto
para executar cada uma delas.

6. Questo da prova do ENADE 2008. Os termos da sequncia de Fibonacci so


definidos por: Fibonacci(0) = 0 Fibonacci(1) = 1 Fibonacci(n) = Fibonacci(n-1)
+ Fibonacci(n-2) Uma soluo recursiva para o clculo do i-simo termo da
sequncia dada pela funo a seguir.

1234567

funcao fibonacci(inteiro longo n) se((n=0) OU (n=1)) entao

retorne n senao

retorne fibonacci(n-1) + fibonacci(n-2) fimse

fim

(continuao exerccio 6):

7. Acerca da execuo recursiva dessa funo, assinale a opo incorreta.

a) medida que o valor de n cresce, h um aumento no nmero de chamadas


recursivas.

b) O mtodo recursivo o mais eficiente para o clculo do i-simo termo da


seqncia de Fibonacci, pois realiza duas chamadas por passo da recurso, cada
uma mais simples do que a chamada original.

c) Na linha 5, a ordem de execuo calcular o valor para fibonacci(n-1) e


somente depois calcular o valor para fibonacci(n-2).

d) As condies de parada da recurso so: o valor de n 0 ou o valor de n 1.

8. Dada a funo X: Int X(int n; int m) { if (n=m) or (m=0) { return 1; } else { return
x(n-1,m)+x(n-1,m-1) ; } } a) Qual o valor de x(5,3) ? b) Quantas chamadas
sero feitas na avaliao acima ?

9. Dada a funo abaixo:

Int X(int N){ if (n >= 0) && (n <= 2) { return n }

else { return x(n-1)+x(n-2)+x(n-3) }

a) quantas chamadas sero executadas para avaliar x(6) ? b) indique a sequencia


temporal destas chamadas.
10. Escreve uma funo que recebe como parmetro um inteiro positivo N e retorna
a soma de todos os nmeros inteiros entre 0 e N.

11. Considere a funo abaixo: int X(int a) { if ( a <= 0 ) return 0; else return a +
X(a-1); }

a) O que essa funo faz?

b) Calcule a sua ordem de complexidade. Mostre como voc chegou a esse resultado.

c) Escreva uma funo no-recursiva que resolve o mesmo problema. Explique.

12. Seja a srie de Fibonacci:

Ento escreva:

a) Uma funo recursiva que gere o termo de ordem n da srie de Fibonacci.

b) Um algoritmo que, utilizando a funo definida acima gere a srie de Fibonacci at o


termo de ordem 20.

13. Fazer uma funo recursiva que calcule o valor da srie S descrita a seguir para
um valor n > 0 a ser fornecido como parmetro para a mesma: S = 1 + 1/2! +
1/3! + ... 1/n! OBS: A funo fatorial tambm deve ser recursiva.

14. O mximo divisor comum (MDC) de dois nmeros inteiros x e y pode ser
calculado usando-se uma definio recursiva:

Exemplo:

MDC (10,6) = MDC (6,4) = MDC (4,6) = MDC (4,2) = MDC (2,4) = MDC (2,2) = 2

Ento, pede-se que seja criada uma funo recursiva para descrever tal definio. Crie,
tambm, um algoritmo que leia os dois valores inteiros e utilize a funo criada para
calcular o MDC de x e y, e imprima o valor computado.

S-ar putea să vă placă și