Возврат нескольких значений из рекурсивной функцииJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Возврат нескольких значений из рекурсивной функции

Сообщение Anonymous »

У меня возникла проблема: мне нужно преобразовать десятичное число в двоичное, а затем сохранить биты в связанном списке, где головной узел является наиболее значимым битом, а последний узел — наименее значащим битом. Решить саму проблему на самом деле легко, поскольку вам нужно только рекурсивно брать по модулю 2 и добавлять результат в список до тех пор, пока десятичное число не станет 0.

Где я Я застрял в том, что мне нужно написать функцию так, чтобы она возвращала пару чисел (массив или список) самого старшего бита и последнего значимого бита.
то есть: ввод 14 в функцию вернет (1, 0), поскольку 14 — это 1110 в двоичном виде.

У меня есть легкий доступ к MSB и LSB (getFirst(), getLast()).

Функция может принимать только один аргумент — десятичное число.

В настоящее время у меня есть этот текущий код:

Код: Выделить всё

public static void encodeBin(int n) {
if(n == 0) return; //Base case
else {
if(n % 2 == 0)
theList.addFirst(0);
else
theList.addFirst(1);
encodeBin(n / 2);
}
// return?
}
Проблема в том, что я не могу понять, как вернуть два значения. Наличие возвращаемого значения означает, что я не могу вызвать encodeBin() сам по себе.

Более того, где мне следует создать список? Если я помещу что-то вроде List = new LinkedList() в самом начале функции, то каждый раз, когда функция вызывает саму себя, она создает новый список и добавляет биты в ЭТОТ новый список. не оригинал, верно? (Список создается при первом вызове функции)

Кто-нибудь знает, как это решить?

Подробнее здесь: https://stackoverflow.com/questions/130 ... e-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»