buenos dias.
He modificado el código pero sigue sin funcionar, me da valores raros.
El código es este:
// Ejercicio 6.34: búsqueda lineal (recursivo) //
#include <stdio.h>
#define TAMANIO 100
/* prototipo de la función */
int busquedaLineal( const int arreglo[], int llave, int tamanio, int n );
/* la función main comienza la ejecución del programa */
int main()
{
int a[ TAMANIO ]; /* crea el arreglo a */
int x; /* contador para inicializar los elementos de 0 a 99 del arreglo a */
int llaveBusqueda; /* valor para localizar en el arreglo a */
int elemento; /* variable para almacenar la ubicación de llaveBusqueda o -1 */
/* crea los datos */
for ( x = 0; x < TAMANIO; x++ ) {
a[ x ] = 2 * x;
} /* fin de for */
printf( "Introduzca la llave de busqueda entera:\n" );
scanf( "%d", &llaveBusqueda );
/* intenta localizar llaveBusqueda en el arreglo a */
elemento = busquedaLineal( a, llaveBusqueda, TAMANIO, 0 );
printf( "elemento = %d\n", elemento );
/* despliega los resultados */
if ( elemento != -1 ) {
printf( "Encontre el valor en el elemento %d\n", elemento );
} /* fin de if */
else {
printf( "Valor no encontrado\n" );
} /* fin de else */
system("pause");
return 0; /* indica terminación exitosa */
} /* fin de main */
/* compara la llave con cada elemento del arreglo hasta que localiza el elemento
o hasta que alcanza el final del arreglo; devuelve el subíndice del elemento
si lo encontró o -1 si no lo encontró */
int busquedaLineal( const int arreglo[], int llave, int tamanio, int n )
{
printf("llave=%d tamanio = %d n = %d\n",llave,tamanio, n);
if ( arreglo[ n ] == llave || n == -1 ) {
printf( "n = %d\n", n );
return n; /* devuelve la ubicación de la llave */
} /* fin de if */
else
{
busquedaLineal( arreglo, llave, tamanio, n+1 );
}
} /* fin de la función busquedaLineal */
Puse printf a la salida de la función para ver el valor de n, y tambien en main para ver el valor de la variable elemento.
En teoría elemento debería ser igual a 'n', sin embargo, da igual la cifra que se ponga, siempre tiene valor 2686324.
Sinceramente no entiendo que falla y me estoy volviendo un poco loco.
Agradecería cualquier ayuda