Ceci est mon code.la fonction n'est pas retournée à une déclaration de retour correcte pour certains cas de test
Problème: Je reçois une sortie incorrecte pour le scénario de test: a = 100 b = 54.
problème Trouvé: Pourquoi est-ce que lorsque la première condition if
dans la méthode computeGcd
est invoquée (lorsque a==b
ou a
est divisible par b
) qu'il ne revient pas de ce si le bloc de retour à la ligne dans la principale méthode d'où elle a été appelée?
Au lieu de cela, il va à la dernière déclaration de retour dans la méthode et il retourne l'ancienne valeur de 'b' à partir de là. Qu'est-ce que je rate?
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if (a >= b) {
System.out.println("\n\nfinal values are: " + computeGcd(a, b)
+ " for a is=" + a + " and b=" + b);}
else
System.out.println(computeGcd(b, a));
sc.close();
}
public static int computeGcd(int a, int b) {
System.out.println("out side a is=" + a + " and b=" + b);
if (a == b || a % b == 0) {
System.out.println("Inside final : a is=" + a + " and b=" + b);
return b;
} else {
a = (a - b * (a/b));
if (a > b) {
System.out.println("Inside test a>b : a is=" + a + " and b=" + b);
computeGcd(a, b);
}
if (b > a) {
System.out.println("Inside test a<b : a is=" + a + " and b=" + b);
computeGcd(b, a);
}
}
System.out.println("exiting else");
System.out.println("i m here :P ");
return b;
}
débogage pour le cas de test: 100 54
Vous nous demande de débogage ou vous avez déjà débogué? – SMA
J'ai déjà fait cela.J'ai juste laissé tous ces sysouts juste au cas où quelqu'un essaie le code, alors ce sera plus facile pour eux. – Ronald