BigInteger Fac(BigInteger n)
{
    if(n < two)
        return one;

    return n*Fac(n-one);
}
double Fac(int n)
{
    if (n < 2)
        return 1;
    
    return n*Fac(n-1);
}
示例#3
0
TEST(RecorderTest, RetValRecorderTest) {
	TRACER_TRACE(&Fac) fac;
	auto facr = tracer::RecordRetVal(fac);
	Fac(3);
	int result[] = {1, 1, 2, 6};
	for (int i = 0; i < 4; ++i) 
		EXPECT_EQ(result[i], facr.RetVal(i));
}
示例#4
0
int main()
{
    int s,x,y;                        //seleccion x e y respectivamente

    do{                            //ejemplo de do while
        printf("nn Seleccione 1 opcionn"        //un "menu" las lineas de un printf pueden ser cortadas
             "-------------------------n"        //de esta forma poniendo todo entre comillas
            " 1.- Potencian"
            " 2.- Raiz Cuadradan"
            " 3.- Sumatorian"
            " 4.- Sumatoria Recursivan"
            " 5.- Factorialn"
            " 6.- Factorial Recursivon"
            " 7.- Fibonaccin"
            "n 0.- Salirn"
            "-------------------------n");        //recien aca cerramos la funcion 
        do{                        //otro ejemplo da vueltas mientras la seleccion sea "invalida"
            printf(" Seleccion: ");    
            scanf("%d",&s);
        }while(s<0||s>7);                //la seleccion tiene que estar entre 0 y 7

        if(!s)                        // ! es negacion, en este kaso si s es 0
            break;                    // sale del loop principal
        
        printf("Ingrese x: ");                //ingreso de datos
        scanf("%d",&x);
    
        if(s==1){                    //si es potencia pide el exponente :D
            printf("Ingrese y: ");
            scanf("%d",&y);
        }

        printf("n");                    //una linea en blanco loca

        switch(s){                    // :O? otra funcion de seleccion switch ejecuta desde 
            case 1: printf("%d elevado a %d es: %dn",x,y,Pow(x,y));    //el primer caso verdadero
                break;                            //hasta ke termina
            case 2: printf("La raiz cuadrada de %d es: %dn",x,Sqr(x));    //o encuentra un break
                break;                            //por lo general en seleccion
            case 3: printf("La sumatoria de %d es: %dn",x,Sum(x));        //multiple se usa un break por
                break;                            //linea como aca
            case 4: printf("La sumatoria de %d es: %dn",x,SumLoop(x));    //los case solo verifican
                break;                            // igualdad
            case 5: printf("El factorial de %d es: %dn",x,Fac(x));        //case 5 es lo mismo que
                break;                            //if(n==5)
            case 6: printf("El factorial de %d es: %dn",x,FacLoop(x));    //si sako los break se ejecutari
                break;                            //dede la seleecion en adelane
            case 7: printf("El %dº numero Fibonacci es: %dn",x,Fib(x));    //util par agrupar onda de
                break;                            //1 a 3 has esto de 4 a 5 otro
            default: break;                            //caso especial este se activa    
        }                                    //en caso de que s sea distinto
                                            //de todas las anteriores
    }while(s); //mientras s sea verdadero osea distinto de 0        

    return 0;
}
double ComplexFactorial(int n)
{
    assert(n>=1);
    
    return Fac(n) + Fac(n-1);
}
示例#6
0
int Fac(int x)                //factorial recursivo
{
    if(x>1)                // igual ke arriba recursividad
        return Fac(x-1)*x;    //la recursividad es buena para ahorrar codigo pero mala para la memoria xD
    return 1;            //caso base 1 si fuera 0 siempre daria sero (multiplicacion
}
BigInteger ComplexFactorial(BigInteger n)
{
    return Fac(n) + Fac(n-one);
}