Cómo escribir un algoritmo para la suma de n factoriales. es decir, 1! +2! +3! +… (N-1) + n

Aquí hay 2 programas para calcular factorial y suma de n números que he programado en C, individualmente.

Sería útil para usted si usted mismo los integra en uno, ya que eso necesitaría una comprensión adecuada de ambos conceptos.

Procedimiento: Primero puede calcular los factoriales uno por uno y almacenarlos en una matriz y luego calcular la suma de los elementos de la matriz.

Nota: Aquí el tipo de datos que he usado es int y, por lo tanto, solo funcionará para valores pequeños de n. Para calcular la suma de factoriales de mayor número, es posible que deba utilizar BIGINTEGER en Java.

  1. Programa para encontrar factorial de un número entero n:
  • utilizando el método iterativo (bucles)

/ * Factorial de un número * /

#include

int main ()
{
int hecho = 1, num, i;

printf (“Ingrese el número: \ n”);
scanf (“% d”, & num);

para (i = 1; i <= num; i ++)
{
hecho = hecho * i;

}

printf (“\ nFactorial de% d es:% d \ n \ n”, num, hecho);

devuelve 0;

}

salida de muestra:

  • usando recursividad

// Factorial usando recursividad

#include

hecho de hecho (int);

int main ()
{
int num, f;

printf (“\ n \ nIntroduzca un número \ n”);
scanf (“% d”, & num);

f = hecho (num);

printf (“\ n \ nFactorial de% d es% d \ n \ n”, num, f);

devuelve 0;

}

hecho int (int aj)
{
si (aj == 1 || aj == 0)
retorno 1;

más
return (aj * fact (aj-1));
}

salida de muestra:

2. Programa para encontrar la suma de los elementos de una matriz:

#include

int main ()
{
int n, suma = 0, c, matriz [100];

printf (“Ingrese el número de enteros que desea agregar \ n”);
scanf (“% d”, & n);

printf (“Ingrese% d enteros \ n \ n”, n);

para (c = 0; c <n; c ++)
{
scanf (“% d”, & array [c]);
suma + = matriz [c];

}

printf (“\ n \ nSum =% d \ n \ n”, suma);
devuelve 0;
}

salida de muestra:

Espero eso ayude.

¡Feliz codificación!

tienes que guardar cada vez la última suma y mult y sumar a la última suma la última suma
suma = 0
mult = 1
para i <- 1 a n
mult = mult * i
suma = suma + mult

int get_Nth_Fact_Sum (sin signo N) {
int suma = 0;
int hecho = 1;
int index = 0;
para (índice = 1; índice <= N; índice ++) {
hecho * = índice;
suma + = hecho;
}
suma de retorno;
}

Esa función C calculará la suma deseada de forma rápida y eficiente. Sin embargo, notaré que un problema de la función factorial es que crece y desborda rápidamente los tipos numéricos de tamaño fijo. Ergo, si está interesado en calcular esta suma para los números de entrada anteriores a los adolescentes, le recomendaría encarecidamente un idioma como Haskell, ya que redimensionará dinámicamente las representaciones numéricas para evitar el desbordamiento (NOTA: este comportamiento deseado aún demostrará una disminución significativa del rendimiento como su la producción crece en dígitos).

Siguientes pasos:
1. Tome dos variables sumOfFactorials como 0 y factorial como 1. La variable ‘factorial’ es el factorial en ejecución hasta el número y ‘sumOfFactorials’ la suma actual de los factoriales que se han totalizado.
2. para cada número del 1 al n haga lo siguiente
2a. multiplica factorial con el número
2b. agregue este resultado a sumOfFactorials

La forma en que lo resolveré es POR:

primero escribiendo una función que devuelva factorial de número con recursión

hecho int (int num)
si num> 1
return num * fact (num-1)
más
volver 1

y luego funcionan esa suma de retorno agregando todos los resultados toman n número como parámetro

int factSum (int num)
suma = 0;
para i = 0; i suma + = hecho (i + 1)

suma de retorno

No es tan fácil porque los factoriales son grandes, puede que no quepan en un entero largo regular a menos que n sea relativamente pequeño. Todo depende de tu propósito. Si desea un resultado aproximado, puede salirse con los números de coma flotante.

More Interesting

¿Cuál es el "mejor" sitio para estudiar estructuras de datos durante las ubicaciones?

Cómo aprender estructuras de datos de manera efectiva

Cómo resolver el problema de invertir la cadena dada si el tamaño de la cadena es mayor que el tamaño de mi RAM

¿Qué algoritmo se puede usar para encontrar la clave para el cifrado y la clave de entrada en el formulario?

¿Qué es el algoritmo de Wagner y Fischer y cuál es su código de muestra en C ++?

¿El operador 'in' mientras busca claves en Python Dictionary toma O (1)? Si es así, ¿cómo?

¿Cuáles son las diferencias entre un programa y un algoritmo?

¿Cuánto conocimiento de implementación de algoritmos usan realmente los programadores experimentados?

¿Necesitamos un algoritmo 10 veces más rápido o una máquina 10 veces más rápida? Da una razón para justificar tu respuesta.

¿Por qué el algoritmo de refuerzo es robusto para sobreajustar?

¿Qué algoritmos de visión por computadora se utilizan en Protracer para el vuelo de una pelota de golf?

Estoy aprendiendo algoritmos, ¿para qué sirve la notación Big O?

¿Cómo determino la complejidad temporal de una expresión matemática que involucra potencias, divisiones y exponenciales? Sé la complejidad temporal de las operaciones simples, pero no sé cómo se supone que las combino para encontrar la respuesta.

¿Alguien podrá escribir un algoritmo que pueda hacer dinero en el mercado durante un período de 20 años?

Dado un gráfico con vértices 2N de modo que existan dos vértices P y Q, con cada ruta de P a Q que contenga al menos N + 1 bordes, ¿cuál es el número mínimo de vértices que debemos eliminar para desconectar P y Q?