CURSO DE C

Recursividade

Na linguagem C, assim como em muitas outras linguagens de programação, uma função pode chamar a si própria. Uma função assim é chamada função recursiva. Todo cuidado é pouco ao se fazer funções recursivas. A primeira coisa a se providenciar é um critério de parada. Este vai determinar quando a função deverá parar de chamar a si mesma. Isto impede que a função se chame infinitas vezes.

Uma função que calcule o fatorial de um número inteiro n é um bom exemplo de uma função recursiva:

#include <stdio.h>
int fat(int n)
{
	if (n) 
  	  return n*fat(n-1);
	else return 1;
}

int main()
{
	int n;
	printf("\n\nDigite um valor para n: ");
	scanf("%d", &n);
	printf("\nO fatorial de %d e' %d", n, fat(n));
	return 0;
}

Note que, enquanto n não for igual a 0, a função fat chama a si mesma, cada vez com um valor menor. n=0 é critério de parada para esta função.

Há certos algoritmos que são mais eficientes quando feitos de maneira recursiva, mas a recursividade é algo a ser evitado sempre que possível, pois, se usada incorretamente, tende a consumir muita memória e ser lenta. Lembre-se que memória é consumida cada vez que o computador faz uma chamada a uma função. Com funções recursivas a memória do computador pode se esgotar rapidamente.

 

Página Anterior Índice da Aula Próxima Página


Curso de C do CPDEE/UFMG - 1996 - 1999