aula14 c
COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN
CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET
Linguagem de Programação
Aula 14 – Linguagem de
Programação C – Recursividade
Prof.: Teresinha Letícia da Silva leticia@cafw.ufsm.br Recursividade
• Em Ciência da computação, a recursividade é a definição de uma subrotina (função ou método) que pode invocar a si mesma.
• As funções recursivas são soluções mais elegantes e simples, se comparadas a funções tradicionais, já que executam tarefas repetitivas sem utilizar nenhuma estrutura de repetição, como for ou while.
Algoritmos recursivos
• A idéia básica de um algoritmo recursivo consiste em diminuir sucessivamente o problema em um problema menor ou mais simples, até que o tamanho ou a simplicidade do problema reduzido permita resolvê-lo de forma direta, sem recorrer a si mesmo.
• Quando isso ocorre, diz-se que o algoritmo atingiu uma condição de parada, a qual deve estar presente em pelo menos um local dentro algoritmo.
• Sem esta condição o algoritmo não pára de chamar a si mesmo, até estourar a capacidade da pilha, o que geralmente causa efeitos colaterais e até mesmo o término indesejável do programa.
Algoritmos recursivos
• Uma função pode chamar a si própria por um número limitado de vezes.
• Cada vez que uma função é chamada de forma recursiva, são alojados e armazenados uma cópia dos seus parâmetros, de modo a não perder os valores dos parâmetros das chamadas anteriores.
• Ponto de Parada ou Condição de Parada: é o ponto onde a função será encerrada.
• Praticamente todas as linguagens de programação usadas hoje em dia permitem a especificação direta de funções e procedimentos recursivos.
Vantagens
• Um programa recursivo é mais elegante e menor que a sua versão iterativa além de exibir com maior clareza o processo utilizado, desde que o problema ou os dados sejam naturalmente definidos através de recorrência. Desvantagens
• Um programa recursivo exige mais espaço de memória e é, na maioria dos