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); }
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)); }
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); }
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); }