У меня есть программа, и я не понимаю ее результата. Это дает мне 110
, но я не знаю, как это возможно. Я называю это только один раз. Для меня это должно быть 3 ?? СпасибоПрограмма трудно понять
public class Test {
public static String operator (int n) {
return((n == 0) ? "" : operator(n/2) + (n % 2));
}
public static void main(String[] args) {
System.out.println(operator(6));
}
}
Я не думаю, что проблема рекурсия, это конкатенация строк, запутанная с арифметикой. – Paul
Для этого вам нужен отладчик. Поместите программу в отладчик и пройдите через нее шаг за шагом. Я мог бы рекомендовать отделить все утверждения в составной инструкции, чтобы вы могли видеть результат каждого из них; создайте temp vars для хранения результатов каждого вызова operator() и т. д. Ваша первоначальная проблема, по предположению, заключается в том, что вы не понимаете, что она рекурсивна - метод operator() вызывает себя. – arcy
Я не вижу конкатенации строк в программе ... – arcy