Bueno, la condición i + j <n es importante y necesaria porque:
(1) Hace que el ciclo sea marginalmente más rápido.
Ejemplo: Dada una cadena de entrada de longitud 100 y una cadena de búsqueda de longitud 20. En lugar de verificar 100 elementos de la matriz para encontrar una cadena de 20 caracteres que no se encuentra en esa cadena, podemos hacer que la función devuelva falso, inmediatamente después de verificar 81 caracteres. Esto es más rápido que verificar los 100 elementos y luego devolver falso.
(2) Para que el código no tenga errores
En ciertos casos, las ubicaciones de memoria después de la matriz de entrada pueden ser utilizadas por otras matrices u otras variables. Pero en ciertos otros casos, esta matriz podría estar al final de la página de memoria disponible, por lo que acceder más allá de esa matriz podría ser un error de página.
- ¿Cuáles son los conceptos matemáticos necesarios para la inclinación de la máquina y la programación?
- ¿Cómo se me ocurre una fórmula de suma para iterar sobre una matriz y cambiar el índice inicial con cada iteración?
- Cómo mejorar mi forma analítica de pensar para trabajar matemáticamente para la programación de computadoras
- ¿Cuál es la mejor manera de aprender geometría algebraica si uno no está interesado en usarlo para propósitos teóricos numéricos, sino más bien para aplicaciones en física teórica e informática teórica?
- ¿Qué es el análisis p delta?
Una mejor manera de escribir este código sería la siguiente, donde esencialmente he cambiado solo 2 líneas:
para (i = 0; i + m <n; i ++) // cambio de código { para (j = 0; j <m; j ++) // cambio de código if (texto [i + j]! = patrón [j]) // comprueba la coincidencia en la posición i + j rotura ; // no se encuentra la coincidencia, rompe el bucle interno if (j == m) devuelve verdadero; // coincidencia encontrada de lo contrario devuelve falso; // coincidencia encontrada }
En el código modificado, estoy verificando i + m <n, de modo que, comenzando en la posición i, y tomando m caracteres, el texto del elemento [i + j] en la línea 4 (donde j es menos que m) no va fuera de la matriz.