hola que tal estoy haciendo un juego de adivinar animales pero necesito hacerlo recursivo pero no tengo idea de como aplicar la recursion
aquí les comparto el código
package evidencia;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class Juego implements Serializable {
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
FileInputStream Fi = new FileInputStream("respuestas.txt");
ObjectInputStream in = new ObjectInputStream(Fi);
Memoria memory = (Memoria)in.readObject();
memory.iniciar("vaca");
FileOutputStream out = new FileOutputStream("respuestas.txt");
ObjectOutputStream os = new ObjectOutputStream(out);
os.writeObject(memory);
}
}
package evidencia;
import java.io.Serializable;
public class Arbol<E> implements Serializable {
public Arbol izquierda;
public Arbol derecha;
public E carga;
public Arbol() {
}
public Arbol(Arbol izquierda,Arbol derecha, E carga){
this.izquierda = izquierda;
this.derecha = derecha;
this.carga = carga;
}
public Arbol(E cargar){
this.izquierda = null;
this.derecha = null;
this.carga = cargar;
}
@Override
public String toString(){
return carga.toString();
}
}
package evidencia;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Serializable;
public class Memoria implements Serializable {
private Arbol raiz;
static BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
public boolean si(String pregunta) throws IOException{
System.out.println(pregunta);
String respuesta = sc.readLine();
return "si".equals(respuesta.toLowerCase());
}
public void iniciar(String firstAnimal) throws IOException{
boolean bucle = true;
if(raiz == null){
raiz = new Arbol(firstAnimal);
}
while(bucle){
if (!si("¿Estas pensando en un Animal?")) {
break;
}
Arbol arbol = raiz;
while(arbol.izquierda !=null){
if (si(arbol.carga+"?")) {
arbol = arbol.izquierda;
}else{
arbol = arbol.derecha;
}
}
String animal = (String) arbol.carga;
if (si("Es un "+animal+"?")) {
System.out.println("Adivine!!");
continue;
}
if(arbol.derecha == null){
System.out.println("¿Que animal era?");
String nuevo = sc.readLine();
System.out.println("que diferencia a un(a) " +animal+ " de un "+nuevo+"?");
String info = sc.readLine();
String indicador = "Si el animal fuera un(a) "+animal+" cual seria la respuesta";
arbol.carga = info;
if (si(indicador)) {
arbol.izquierda = new Arbol(animal);
arbol.derecha = new Arbol(nuevo);
}else{
arbol.derecha = new Arbol(animal);
arbol.izquierda = new Arbol(nuevo);
}
}else{
System.out.println(arbol.derecha);
}
}
}
}