• Sábado 14 de Diciembre de 2024, 18:29

Autor Tema:  Problema con hacer el factorial iterativo y recursivo  (Leído 4937 veces)

ermiguel1979

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Problema con hacer el factorial iterativo y recursivo
« en: Jueves 15 de Octubre de 2009, 13:07 »
0
Hola a todos y GRACIAS de antemano. Estoy empezando con C en la facultad, y no me queda claro si el siguiente ejemplo no hace nada en sí, o si falta declarar y darle valor a las variables, o que demonios necesita para que entregue el factorial de un número de forma recursiva e iterativa.

También incluyo dos ejemplos individuales que me dan error al compilar.

Ejemplo doble (iterativo/recursivo):

#include <cstdlib>
#include <iostream>
#include <stdio.h>
#define VALOR 5
#define FACT 120

using namespace std;

int main(int argc, char *argv[])
{
    int fact_i(int v)
    {
        int r=1, i=0;
       
            while(i<=v)
            {
                       r=r*1;
                       i=i+1;
            }
        return r;
    }
   
    int fact_r (int v)
    {
        if(v==0) return 1;
       
        else return v*fact_r(v-1);
    }

    main() {
           int r, valor=VALOR;
           if((r=fact_i(valor)) !=fact_r(valor)) printf("Codificacion erronea!!.n");
           else if(r==FACT) printf("Codificacion correcta.n");
           else printf("Algo falla!!.n");
    }
   
    system("PAUSE");
    return EXIT_SUCCESS;
}


EJEMPLO RECURSIVO SIMPLE:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int factorial(int n) {
        if ((n==0)||(n==1))
           return(1);
        else
            return(n*factorial(n-1));
    {
    system("PAUSE");
    return EXIT_SUCCESS;
}


EJEMPLO ITERATIVO SIMPLE:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int factorial(int n) {
        int i, fact=1;
       
        for (i=2; i<=n; i++)
            fact=fact*i;
        return(fact);
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}