Это мой код.Функция не возвращается при правильной инструкции возврата для некоторых тестовых случаев
Вопрос: Я получаю неверный вывод для тестового случая: a = 100 b = 54.
Проблема Найдено: Почему это, что, когда первый if
условие в методе computeGcd
вызывается (т.е. когда a==b
или a
делится на b
), что она не возвращается из этого, если блок обратно к линии в основной метод, откуда он был вызван?
Вместо этого он переходит к последнему оператору return в методе и возвращает от него старое значение 'b'. Что мне не хватает?
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;
}
отладки для тестового случая: 100 54
Вы спрашиваете нас отладить или вы уже отлаживались? – SMA
Я уже сделал это. Я просто оставил все эти sysouts на случай, если кто-то попробует код, тогда им будет проще. – Ronald