Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
My young nephew came with a question about recursive functions, after a few minutes, he fully understood these samples:
#include <stdio.h>
/*
0! = 1
1! = 1
3! = 3*2*1 = 6
5! = 5*4*3*2*1 = 120
3! = 3*2! = 3*(2*1!) = 3*[2*(1)] = 3*(2*1) = 3*2*1 = 6
n! = n*(n-1)!
*/
int factorial_recursivo(int n)
{
if(n <= 1)
return 1;
return n * factorial_recursivo(n-1);
}
int factorial_iterativo(int n)
{
int resultado=1;
int iteraciones = n-1;
int k;
if(iteraciones <= 0)
return 1;
for(k=n; k>1; --k)
resultado *= k;
return resultado;
}
void iterativo()
{
int n=3;
int factorial = factorial_iterativo(n);
printf("El factorial de 0 es %d\n",factorial_iterativo(0));
printf("El factorial de 1 es %d\n",factorial_iterativo(1));
printf("El factorial de %d es %d\n",n,factorial);
printf("El factorial de 5 es %d\n",factorial_iterativo(5));
}
void recursivo()
{
printf("El factorial de 0 es %d\n",factorial_recursivo(0));
printf("El factorial de 1 es %d\n",factorial_recursivo(1));
printf("El factorial de 3 es %d\n",factorial_recursivo(3));
printf("El factorial de 5 es %d\n",factorial_recursivo(5));
}
void main()
{
iterativo();
recursivo();
}
And also this:
#include <stdio.h>
struct Nodo
{
int dato;
Nodo* izquierdo;
Nodo* derecho;
};
void muestra_arbol(Nodo* padre,int tabs)
{
if(padre==0) return;
for(int k=0; k<tabs; ++k)
printf("\t");
printf("%d\n",padre->dato);
muestra_arbol(padre->izquierdo,tabs+1);
muestra_arbol(padre->derecho,tabs+1);
}
void muestra_arbol_secuencia(Nodo* padre)
{
if(padre==0) return;
muestra_arbol_secuencia(padre->izquierdo);
muestra_arbol_secuencia(padre->derecho);
printf("%d",padre->dato);
}
Nodo* creaNodo(int n,Nodo* izq,Nodo* der)
{
Nodo* nodonuevo=new Nodo;
nodonuevo->dato=n;
nodonuevo->izquierdo=izq;
nodonuevo->derecho=der;
return nodonuevo;
}
void arbol()
{
Nodo* n1=creaNodo(4,0,0);
Nodo* n2=creaNodo(5,0,0);
Nodo* izq=creaNodo(2,n1,n2);
Nodo* der=creaNodo(3,0,0);
Nodo* raiz=creaNodo(1,izq,der);
muestra_arbol(raiz,0);
printf("\n");
muestra_arbol_secuencia(raiz);
}
void main()
{
arbol();
}