Búsqueda binaria recursiva, así como escribir una versión recursiva de Notas

forma recursiva para poner en práctica la búsqueda binaria.

En una lista de matriz ordenada, comenzando en el índice 1, para ver si la matriz de destino. En las palabras del índice de rentabilidad, 0 en caso contrario.

pensamiento
   1. Lineal mesa de selección, por lo general ascendente en orden.
  2. El valor intermedio se compara con el valor objetivo.
  2.1 Comparación valor intermedio y el valor objetivo, si es igual, se devuelve el subíndice, salida.
  2.2 valor de la mediana es mayor que el valor objetivo, y luego continuar a buscar un valor intermedio entre el mínimo y realizar 2.
  2.3 el valor intermedio más pequeño que el valor objetivo, a continuación, continúa la búsqueda y el valor intermedio entre un valor máximo, realice 2.
 

Primera edición (error)

int recursive_bin_ser ( int * Lista, int longitud, int objetivo) {
     int min = 1. , max = longitud - 1. , MID = (max + min) / 2 ;
     IF (Lista [MID] == objetivo) volver MID;
     el otro  IF (Lista [MID] <destino) de retorno   recursive_bin_ser (MID + + Lista 1. , max- MID, objetivo);
     el otro  de retorno recursive_bin_ser (Lista, medio ; min, objetivo) 
} 
.. // 1 sin procesar de destino no existe.
// 2. Lo que es peor, cada vez que una llamada de función, mínimo, máximo, media serán re-inicializado, de hecho, no es el caso, mínimo, máximo, media min pueden ser una función de la ejecución anterior, como máximo, a mediados.
// Cada función llamada, una función asignada a las variables locales mínimo, máximo, medio. La acción correctiva, en forma de parámetros pasados.


segunda edición

int recursive_bin_ser ( int lista *, int min, int max, int objetivo) {
     int mediados = (min + max) / 2 ; 
    mientras que (min <= max) {
     si (lista [mediados] == objetivo) de retorno mediados;
    más  si (lista [MID] <destino) de retorno   recursive_bin_ser (lista, mediados + 1 , max, objetivo);
    otro  retorno recursive_bin_ser (lista, min, mid - 1 , diana); 
    } 
    Volver  0 ; 
}
// 1. Nos min, max como un parámetro función de la forma, cuando se realiza una función recursiva, una función se ha alcanzado el máximo y el mínimo se puede acceder a una función del objeto. Creo que el futuro es tan poco como sea posible en una función recursiva
las variables // declara, sobrecarga de memoria de primer año, y la segunda variable del mismo nombre entre cada función fácil confundir.
//2.while(min <= max) cuando el bucle termina, indica que el objetivo no está en la lista, porque la última min = max, min + 1 es el siguiente paso o max -1;
int () {principal
     int lista [ 5 ] = {
         0 , 1 , 2 , 3 , 4 
    }; 
    std :: sort (lista, la lista de + 5 ); // 排序 
    printf ( " % d \ n " , recursive_bin_ser (lista, 1 , 4 , 100 ));

 12.30, y que así sea, el sueño roto, sino también como un pueblo de herramientas al día! ! !

Supongo que te gusta

Origin www.cnblogs.com/jielearscoding/p/12556348.html
Recomendado
Clasificación