Ayudar con la escritura de un vacío inversa () método y uso de la recursividad para revertir una oración completa (Java)

StackOverflow https://stackoverflow.com/questions/1869434

  •  18-09-2019
  •  | 
  •  

Pregunta

Ya he escrito algo que quita el primer carácter de una cadena y la coloca después de la subcadena restante y luego lo imprime, las instrucciones eran para revertir la sentencia utilizando la recursividad mediante la eliminación de la primera letra de la oración y concatenar a la invertido subcadena restante, es decir. "Hola" produce "Olleh". Pero no sé acerca de la recursividad parte, cualquier ayuda se agradece, gracias. Este es mi código:

public class Sentence {

   private String sentence;

   public Sentence(String astring) {
      sentence = astring;
   }

   public void reverse(){

   String firstChar = sentence.substring(0,1);

   String remainingSen = sentence.substring(1,sentence.length());

   System.out.println(remainingSen+firstChar);  
  }
}
¿Fue útil?

Solución

¿Comprende el concepto de recursividad? Si es así, averiguar el caso base (la condición de que se detendría la recursividad) y lo que quiere hacer en cada paso recursivo. Sugerencia: se necesita un método recursivo que toma la cadena que se invierta y devuelve la cadena inversa. No va a responder a una pregunta directamente hacia arriba HW, pero que debería empezar.

EDIT: (Una pista más) no trate de hacer el vacío inversa () método recursivo. Tiene que llamar a un método recursivo diferente, privada que realmente hace la marcha atrás.

Otros consejos

Al ver que se trata de una tarea, voy a dar algunos consejos para empezar:

  • un método recursivo llama a sí mismo a hacer parte de la obra
  • un método reverse() teniendo un argumento String y devolver la versión invertida de la cadena podría llamarse a sí misma.
  • si se quita el primer carácter y la agrega al final de la invertida de izquierda más, su trabajo está hecho.

Si se trabaja a cabo los consejos anteriores, que debería haber resuelto su problema: -)

En general, si desea escribir una función recursiva, se le llama a la función en sí misma. Por ejemplo:

void fn() {
    fn() 
}

En este ejemplo, obviamente, será un bucle infinito.

En su caso, usted quiere llamar a su función de marcha atrás varias veces hasta que se llega a un estado definido (donde se transforma Hola a Olleh).

public class Sentence {

  private String sentence;

  // ... etc ...

  public void reverse() {
      // Base Case: When do you want this to end? This statement is designed
      // to end the recursion when a desired state is reached

      // some sort of string manipulation (which you have already worked on)

      // call reverse() to continue the 'looping' until 
      // a desired _case_ is reached
  }
}

Asumo que esto es una pregunta tarea y que es debido pronto, así que no voy a dar una respuesta exacta ...

Actualización 1 : I modificado el ejemplo inverso para que coincida con las limitaciones que se expresan

.
public void reverse()
{
    if(text.length() > 0)
    {
        String first = text.substring(0,1);
        String remaining = text.substring(1);

        Sentence shorter = new Sentence(remaining);
        shorter.reverse();

        text = shorter.text + first;
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top