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
aquí les comparto el código
Código (java) [Seleccionar]
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);
}
}
Código (java) [Seleccionar]
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();
}
}
Código (java) [Seleccionar]
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);
}
}
}
}