of 4 /4
16/9/2009 1 Universidade Federal de Sergipe – UFS Curso: Sistema de Informação Campus: Itabaiana Professor: Thiago S. Reis Santos e-mail: [email protected] Roteiro O que é Recursividade? Técnicas para desenvolver algoritmos recursivos Definição Matemática de Fatorial Exercício – Resolvido Recursividade Exercícios Torre de Hanói O que é Recursividade? Recursividade significa algo ser definido em termos de si próprio. Em termos de programação: a recursividade é uma técnica em que uma rotina, no processo de execução de suas tarefas, chama a si mesma; A recursão é uma técnica poderosa em definições matemáticas; O que é Recursividade? Uma Imagem Recusiva. Técnicas para desenvolver algoritmos recursivos A recursão em programação se dá através de sub- rotinas, geralmente funções; Assim sendo cria-se uma função que em seu corpo terá uma chamada a si própria; Todo cuidado é pouco ao se usar funções recursivas, pois facilmente podemos gerar um “loop infinito”. Técnicas para desenvolver algoritmos recursivos A primeira coisa que temos de pensar é em um critério de parada. Isto impede que a função chame a sí própria “infinita” vezes; Este é um requisito fundamental: as chamadas recursivas de um procedimento P devem estar sujeitas à uma condição B (condição de parada), a qual, em algum instante, se torna verdadeira. Finitude dinâmica

07 - Recursividade · Definição Matemática de Fatorial Exercício – Resolvido Recursividade Exercícios

Embed Size (px)

Text of 07 - Recursividade · Definição Matemática de Fatorial Exercício – Resolvido Recursividade...

  • 16/9/2009

    1

    Universidade Federal de Sergipe UFSCurso: Sistema de Informao

    Campus: ItabaianaProfessor: Thiago S. Reis Santos

    e-mail: [email protected]

    Roteiro O que Recursividade? Tcnicas para desenvolver algoritmos recursivos Definio Matemtica de Fatorial Exerccio Resolvido Recursividade Exerccios Torre de Hani

    O que Recursividade? Recursividade significa algo ser definido em termos de

    si prprio. Em termos de programao: a recursividade uma

    tcnica em que uma rotina, no processo de execuo de suas tarefas, chama a si mesma;

    A recurso uma tcnica poderosa em definies matemticas;

    O que Recursividade?

    Uma Imagem Recusiva.

    Tcnicas para desenvolver algoritmos recursivos A recurso em programao se d atravs de sub-

    rotinas, geralmente funes;

    Assim sendo cria-se uma funo que em seu corpo ter uma chamada a si prpria;

    Todo cuidado pouco ao se usar funes recursivas, pois facilmente podemos gerar um loop infinito.

    Tcnicas para desenvolver algoritmos recursivos A primeira coisa que temos de pensar em um critrio

    de parada. Isto impede que a funo chame a s prpria infinita vezes;

    Este um requisito fundamental: as chamadas recursivas de um procedimento P devem estar sujeitas uma condio B (condio de parada), a qual, em algum instante, se torna verdadeira.

    Finitude dinmica

  • 16/9/2009

    2

    Definio Matemtica de Fatorial

    )!1(*!0 xse1!11 xse1!0 0 xse

    !xxx

    x

    A definio de fatorial de natureza recursiva, ou seja, existe uma chamada a ela mesma em x*(x-1)!

    A condio de parada quando x decrementado at o valor 1. Dessa forma encerra-se as multiplicaes sucessivas.

    Exerccio - Resolvido Escreva uma funo em Java para o clculo do fatorial

    de forma recursiva e de forma iterativa.

    // Algoritmo Iterativopublic long fatorial(int x) {

    if(x

  • 16/9/2009

    3

    Exerccios 1) Faa um programa em Java que calculo o valor de

    Fibonacci para um n fornecido pelo usurio.

    )fib(n)fib(nfib(n)n)fib(n)fib(n

    fib(n)211 se

    111 se100 se

    Exerccios 2) Faa a implementao de forma recursiva do

    rastreamento da soluo do problema da Torre de Hani sendo o nmero de disco ser informado pelo usurio (mximo 12).

    A Torre de Hani um quebra-cabea que consiste em uma base contendo n pinos, em um dos quais so dispostos alguns discos uns sobre os outros, em ordem crescente de dimetro, de cima para baixo.

    Torre de Hani O problema consiste em passar todos os discos de um

    pino para outro qualquer, usando um dos pinos como auxiliar, de maneira que um disco maior nunca fique em cima de outro menor em nenhuma situao.

    Torre de Hani http://www.prof2000.pt/users/pjca/Jogos_ficheiros/ha

    noi/Torre%20de%20Hanoi.html

    Torre de Hani interessante observar que o nmero mnimo de

    "movimentos" para conseguir transferir todos os discos da primeira estaca terceira 2n-1, sendo n o nmero de discos. Logo:

    Para solucionar um Hani de 3 discos, so necessrios 2 -1 movimentos = 7 movimentos

    Para solucionar um Hani de 7 discos, so necessrios 127 movimentos

    Para solucionar um Hani de 15 discos, so necessrios 32.767 movimentos

    Exerccios A resoluo do 2 exerccio deve ser a impresso dos

    movimentos dos discos. Ex.: Caso seja com 5 disco a soluo deve ser assim: 1 passo movendo disco A da 1 torre para 3 torre 2 passo movendo disco B da 1 torre para 2 torre 3 passo movendo disco A da 3 torre para 2 torre 4 passo movendo disco C da 1 torre para 3 torre

  • 16/9/2009

    4

    Referncias

    HORSTMANN, Cay S.;CORNELL, Gary. Core Java 2: Volume I - Fundamentos. Traduo: AndrezaGonalves e Marcelo Soares. 7 ed. Rio de Janeiro: Alta Books editora, 2005.

    Slides da Professora Maily. Wikipedia,

    http://pt.wikipedia.org/wiki/Torre_de_Hanoi