¿Cómo entender el programa Rabbit en lenguaje C pregunta 100?
La regla del conejo es una secuencia:
1,?1,?2,?3,?5,?8,?13,?21?.... Usar Tres soluciones: iteración, recursividad y matriz.
El código 1 usa iteración:
#Contains? & ltstdio.h & gt
int? Señor()
{
¿Dragón? f1=1,? F2 = 1; ///? ¿Número de conejos?
int? i;//?Número de ciclos?
int? n; //?El mes a calcular
Printf("Ingrese el número de meses a calcular:");
scanf("%d ", & ampn);
//?¿Calcular el número de bucles?
if(n%2==1){
n? =?(n+1)/2;
}En caso contrario {
n? =?n/2;
}
for(I = 1;i<= n;i++){
Printf("%d Hay %d en el mes\n ", i*2-1,? f 1);
Printf("Hay %d en el %d mes\n ", i*2,? F2);
f 1 = f 1+F2;? /*Suma los dos primeros meses y asígnalo al tercer mes*/
F2 = f 1+F2;? /*Suma los dos primeros meses y asígnalo al tercer mes*/
}
¿Devolver? 0;
}Resultado de la ejecución:
Ingrese el número de meses a calcular: 10.
Hay 1 en enero.
El segundo mes tiene 1.
Hay dos en el tercer mes.
Hay tres en el cuarto mes.
El quinto mes tiene cinco.
8 en el sexto mes.
Hay 13 en el séptimo mes.
El octavo mes tiene 21.
Hay 34 en el noveno mes.
En el mes 10, 55 El método 2 usa recursividad:
# include & ltstdio.h & gt
int? Feibonacci(int?n){
if(n==1||n==2)
¿Regresión? 1;
¿Y si?
¿Volver? Fibonacci(n-1)+Fibonacci(n-2);
}
int? principal(){
int? n; ///?¿El mes a calcular?
Printf("Ingrese el número de meses a calcular:");
scanf("%d ", & ampn);?
printf("% El número total de conejos en d meses es %d\n ", n,? feibonacci(n));
¿Regresión? 0;
}Resultado de la ejecución:
Ingrese el número de meses a calcular: 10.
El número total de conejos en octubre fue 55. La recursividad parece muy lógica, pero la eficiencia de este tipo de recursividad es muy lenta. Si intenta contar el número de conejos a los 20, 30 y 40 meses de edad, obviamente es mucho más lento que los otros dos métodos. Para un análisis detallado, consulte: El lenguaje C utiliza la recursividad para encontrar números de Fibonacci, lo que le permite descubrir las fallas y los cuellos de botella de eficiencia de la recursividad.
El código 3 utiliza una matriz.
# include & ltstdio.h & gt
¿No es válido? principal()
{
int? un[100]? , I, n;
Printf("Ingrese el número de meses:");
scanf("%d ", & ampn); a[ 0]= a[1]= 1;
for(I = 2;i<n;i++)
a[I]= a[I-1]+a[ I-2];
Printf("El conejo del mes %d es: %d\n ",?n,?a[n-1]);
} Ejecutando resultados:
Por favor, introduzca el número de meses: 10.
El Conejo de Octubre cumple: 55.