Вы # 1 сделали почти правильно (return n
не скомпилируется), поэтому давайте посмотрим на # 2:
рассмотрим рекурсивный случай числа, большего или равного 12. ВВ этом случае сначала вызовите метод рекурсивно, используя частное, и конкатенируйте результат (используйте оператор + для соединения строк) с результатом другого рекурсивного вызова, используя остаток. Возврат объединенного результата двух рекурсивных вызовов.
Давайте сделаем это по одному шагу за раз, работая над жирным шрифтом.
сначала вызовите метод рекурсивно используя частное
int quotient = n / 12;
first вызвать метод рекурсивно используя частное
toBase12(quotient)
результат другого рекурсивного вызова с использованием остатка
int remainder = n % 12
результат другого рекурсивного вызова с использованием остатка
toBase12(remainder)
[...] и объединяют результат (используйте оператор + для соединения строк) с [...]
toBase12(quotient) + toBase12(remainder)
Возвращает объединенный результат двух рекурсивных вызовов
Давайте также удалим переменные:
return toBase12(n / 12) + toBase12(n % 12)
Как видите,задание включало в себя пошаговые инструкции о том, что вы должны делать. Все, что вам нужно было сделать, это написать код, который вам объяснил.
Окончательный результат:
public static String toBase12(int n) {
if (n < 10)
return Integer.toString(n); // or String.valueOf(n) or "" + n
if (n == 10)
return "A";
if (n == 11)
return "B";
return toBase12(n / 12) + toBase12(n % 12);
}
Тест
System.out.println(toBase12(298));
Выход
20A