Java - Duda porque se genera bucle infinito

 
Vista:

Duda porque se genera bucle infinito

Publicado por soloquito (1 intervención) el 29/11/2017 19:37:27
Hola buenas , ¿alguien podría decirme porque se genera un bucle infinito en este programa?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.util.Scanner;
public class exponencial_recursiva {
	public static void main(String[] args) {
		Scanner reader = new Scanner(System.in);
		int n1,n2,n3,resultado;
		System.out.println("Inserta un numero ");
		n1=reader.nextInt();
		System.out.println("Inserta otro ");
		n2=reader.nextInt();
		n3=1;
		resultado=exponencial(n1,n2,n3);
		System.out.println("El resultado es " + resultado );
 
	}
 
	static int exponencial(int n1,int n2,int n3){
		System.out.println(n1 + "-" + n2  + "-"  + n3);
		n3=n3*n1;
 
		if(n2==0)
		return 1;
 
		while (n2>1){
 
			exponencial(n1,n2-1,n3);
		}
		return(n3);
 
	}
}


Cuando n2=1 sigue entrando en while
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 32
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Duda porque se genera bucle infinito

Publicado por Leonardo (16 intervenciones) el 29/11/2017 20:21:54
Mira ya se porque es infinito, cuando vos mandas el parametro al principio el n2 nunca lo cambias, cuando mandas a llamar a la función exponencial dentro de esta misma funcion te lo resta pero cuando vuelve a la función principal te sigue manteniendo el n2 con el valor que tenia, para que no sea infinito deberias restarle antes el -1

Seria onda:
while (n2>1){

n2--;
exponencial(n1,n2,n3);

}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda porque se genera bucle infinito

Publicado por Ramón (6 intervenciones) el 01/01/2018 10:59:08
En la función exponencial, el return tienes que ponerlo dentro del while:
return exponencial (n1, n2-1, n3)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar