Funciones recursivas en C

– Prog101

/* Prog101.cpp */
#include <stdio.h>
long fact(int n);
void main()
{
int num;
printf(«n Introduce un número entero: «); scanf(«%d»,&num);
printf(«n El factorial de %d es %ld», num,fact(num));
}
long fact(int n)
{
if (n<=1) return 1;
else return n*fact(n-1);
}

Graba el programa con el nombre PROG101, en TuCarpeta.

Ejecútalo varias veces. Probablemente el programa no funcionará para valores mayores que 16 (piensa que es una función que crece muy aprisa).

Estudio del PROG101:

Una función recursiva es una función que se llama a sí misma: observa que en el “interior” de la función fact(), hay una llamada a sí misma: n*fact(n-1)

–   Prog102

/* Prog102.cpp */
/* Sucesión de Fibonacci (forma recursiva) 0,1,1,2,3,5,8,13,…. */
#include <stdio.h>
int fibona(int v);
void main()
{
int r,valor;
printf(«0»);printf(«n1»);
printf(«n1»); for(valor=1;valor<=20;valor++)
{
r=fibona(valor);
printf(«n%d»,r);
}
}
int fibona(int v)
{
if((v==0)||(v==-1)) return 1; else
return fibona(v-1)+fibona(v-2);
}

Fuente: Programación en C/C++ (Manual FV) de Fermí Vilà