Funções Recursivas by Aquiles Burlamaqui. Construção de Algoritmos Funções Recursivas...

Preview:

Citation preview

Funções Recursivasby Aquiles Burlamaqui

Construção de Algoritmos

Funções Recursivas Definição Elementos Exemplos Exercícios em Sala T8: Torre de Hanoi

Funções Recursivas

Uma função recursiva é uma função que se refere a si própria. A ideia consiste em utilizar a própria função que estamos a definir na sua definição.

Funções Recursivas

Em todas as funções recursivas existe: Um passo básico (ou mais) cujo resultado

é imediatamente conhecido. Um passo recursivo em que se tenta

resolver um sub-problema do problema inicial.

Funções Recursivas

#include <stdio.h> int fatorial( int n ) { int i,p; p = 1; for( i=2; i<=n; i++ ) p = p * i; return p; }

Funções Recursivas

#include <stdio.h>

int main(){ unsigned int numero; printf("\nEntre com um numero positivo."); scanf("%u", &numero); printf("O fatorial de %u vale %u.", numero, factorial(numero)); getch();}

unsigned int fatorial (unsigned int num){ unsigned int fato; if (num == 1) return (1); else fato = num * fat (num-1); return fato;}

Funções Recursivas

factorial(6) 6 * factorial(5) 6 * 5 * factorial(4) 6 * 5 * 4 * factorial(3) 6 * 5 * 4 * 3 * factorial(2) 6 * 5 * 4 * 3 * 2 * factorial(1) 6 * 5 * 4 * 3 * 2 * 1 * factorial(0) 6 * 5 * 4 * 3 * 2 * 1 * 1 6 * 5 * 4 * 3 * 2 * 1 6 * 5 * 4 * 3 * 2 6 * 5 * 4 * 6 6 * 5 * 24 6 * 120 720

Funções Recursivas

Fibonacci fib(1) = 1 fib(2) = 1 fib(n) = fib(n-1) + fib(n-2), para n > 2

Funções Recursivas

// calcula o n-ésimo número de Fibonacci. int fib( int n ) { if( n==1 || n==2 ) return 1; else return fib(n-1) + fib(n-2); }

Funções Recursivas

Recursão versus Iteração Quando usar um ou outro? Recursão

Percurso de uma árvore; Função de Ackermann

Algoritmos de divisão e conquista(Quicksort, etc)

Funções Recursivas

Linguagens de programação modernas o espaço disponível para o fluxo de controle é geralmente bem menor que o espaço disponível na heap;

Programa na Memória

Funções Recursivas

T8: Construir um programa que implemente o jogo Torre de Hanoi( para n discos), permitindo que o usuário tente resolvé-lo como também permita que ele peça a resposta ao computador, e o computador exiba tal resposta visualmente.

Recommended