¿Por qué funciona este método recursivo de Java para contar dos caracteres?

Tratando de aprender Java en este momento. Estaba resolviendo algunos problemas de recursión y me encontré con uno que me pedía que contara las ocurrencias de la subcadena "hola" en otra cadena. Estaba buscando formas recursivas de hacer esto, y encontré un código que básicamente hacía lo que quería y podía parafrasear, pero no entendía cómo / por qué funciona. No tuve ningún problema con los otros problemas de recurrencia, y entiendo el concepto de llamar a una función dentro de su cuerpo, pero la forma en que funciona este código me desconcierta. Pasarlo en un depurador me confundió.

 public int countHi(String str) {
  int n = str.length();
  if(n <= 1) return 0;

  if(str.substring(0, 2).equals("hi"))
    return countHi(str.substring(1)) + 1;

  return countHi(str.substring(1));
}
Respuesta 1

No puedo cargar la imagen en el objeto BufferedImage con el nuevo archivo () sin la ruta completa de la imagen. Cuando intento cargar un image.png en el objeto BufferedImage con un nuevo archivo (), me enfrento a los resultados: éxito ...

¿Alguien usa Eclipse IDE para el desarrollo de Java EE? Si alguien lo hace, ¿puedes responderme estas preguntas? Cómo crear archivos como "beans.xml", "sun-web.xml", etc. Algunos XML se crean durante ...

Tengo un jtree. He escrito el código para buscar un nodo dado en el árbol cuando se hace clic en el botón de búsqueda y ahora tengo que buscar la siguiente ocurrencia si existe con otro clic en ese botón. ...

Estoy empezando a construir una puerta de enlace API de microservicios, y estoy considerando Spring Cloud para ayudarme con el enrutamiento. Pero algunas llamadas a la API de Gateway necesitarán múltiples solicitudes a diferentes servicios. ...