Me dicen que si n = 25, tenemos Sn = 121392 donde Sn es el número de adiciones realizadas en la siguiente función para calcular el enésimo número de Fibonacci. ¿Alguien puede explicar cómo? Int F (int n) {if (n == 0) return (0); if (n == 1) return (1); retorno (F (n-1) + F (n-2));}

Aquí hay dos formas posibles de obtener su respuesta.
Uno determina la solución de forma cerrada a la relación de recurrencia, y el otro toma parte de la secuencia, la relaciona con otra secuencia y usa esa relación para resolver el término específico deseado.

Antes de entrar en cualquiera de estos métodos, debemos descubrir la relación de recurrencia de esta secuencia de sumas.
¿Cuántas adiciones están involucradas en el cálculo de S0 y S1? 0 para ambos, ya que son valores predefinidos. ¿Qué hay de S2? 1 adicional.
Con un poco de inducción matemática, podemos demostrar que:
[matemáticas] S_ {n} = S_ {n-1} + S_ {n-2} + 1 [/ matemáticas]

De manera intuitiva, podemos justificar esto diciendo que S2 = S1 + S0 + 1, donde se suma el 1 debido a la suma de las dos sumas, y las dos sumas representan las sumas requeridas para generar esas sumas individuales, por lo tanto, tenemos el total Número de adiciones.

Bien, entonces nuestra relación de recurrencia está definida por lo anterior, junto con los casos base de S0 y S1.
Observación:
Por simplicidad de hacer una tabla, definamos T (n) = Sn.
T (0) = 0 F (0) = 0
T (1) = 0 F (1) = 1
T (2) = 1 F (2) = 1
T (3) = 2 F (3) = 2
T (4) = 4 F (4) = 3
T (5) = 7 F (5) = 5
T (6) = 12 F (6) = 8
T (7) = 20 F (7) = 13
T (8) = 33 F (8) = 21
T (9) = 54 F (9) = 34
T (10) = 88 F (10) = 55
T (11) = 143 F (11) = 89
T (12) = 232 F (12) = 144
T (13) = 376 F (13) = 233
F (14) = 377

De acuerdo, podemos observar que F (n + 1) = T (n) +1 de esta tabla relativamente corta.
Por lo tanto:
[matemáticas] S_ {25} = F (26) -1 = 121393-1 = 121392 [/ matemáticas]

Si eso no es tan riguroso como quisiera, existen técnicas matemáticamente rigurosas para resolver la relación de recurrencia y dar una solución de forma cerrada para calcular Sn (principalmente la sección “Generar funciones” de Cómo resolver relaciones de recurrencia).

1. Sn total = no de ejecución de la línea no 21
[porque solo en línea no se realiza la suma 21 ]

2. no de ejecución de la línea 21 = no de ejecución de la línea 20

3. no de ejecución de la línea 20 = 121392

de (1), (2) y (3)

Sn = 121392

 #include #define N 25 int no_add = 0; int main() { int f = fib(N); // printf("fib = %d\n", f); printf("No of additions = %d\n",no_add ); return 0; } int fib(i) { if( i == 0 || i == 1) { return 1; } no_add++; return (fib(i-1)+fib(i-2)); } 

More Interesting

¿Por qué SAS es mucho más rápido que R? Utilicé el código para encontrar los primeros k números primos en SAS y R para comparar su eficiencia, y los códigos son esencialmente los mismos, pero los resultados están fuera de mi mente.

¿Puede un desarrollador web beneficiarse de la CS teórica? ¿Cómo puede ser eso?

Informática: ¿Son nerds los estudiantes de informática?

¿Es útil aprender Matemática discreta antes de la informática?

¿Cuáles son algunos problemas simplemente en teoría de grafos o combinatoria para estudiantes universitarios?

¿Los programadores de computadoras son naturalmente buenos en matemáticas?

Teoría de la complejidad computacional: ¿Cuál es la diferencia entre las máquinas de Turing deterministas y no deterministas?

¿Cuál es el significado de los idiomas [math] \ omega [/ math] en informática?

¿Son defectuosos los números complejos?

¿La criptografía es un arte o una ciencia?

¿Dónde y cómo se superponen la programación y las matemáticas?

Cómo mejorar mi habilidad de programación en los temas de matemática y geometría

¿Los problemas informáticos de tipo nQueens tienen aplicaciones en física, en particular en la teoría de la materia condensada?

Tengo 23 años, quiero ser cantante profesional y quiero aprender música clásica. ¿Es demasiado tarde?

Cómo demostrar que existe un conjunto de movimientos para que todos los elementos de la matriz se conviertan en 0, donde en un movimiento tienes que elegir dos elementos distintos de cero y restar uno de los dos dada una condición