java version "1.8.0_92"
Привета,Преобразовать итерационную функцию рекурсии
Я пытаюсь преобразовать эту функцию, которая использует итерацию к рекурсивному.
public static String bitConversion(int x) {
List<Integer> binaryList = new ArrayList<Integer>();
while(x > 0) {
binaryList.add(x % 2);
x /= 2;
}
StringBuilder stringBuilder = new StringBuilder();
for(Integer binary : binaryList) {
stringBuilder.append(binary.toString());
}
return stringBuilder.toString();
}
Моя попытка это
public static String bitConversion(int x) {
List<Integer> binaryList = new ArrayList<Integer>();
if(x <= 0) {
StringBuilder stringBuilder = new StringBuilder();
for(Integer binary : binaryList) {
stringBuilder.append(binary.toString());
}
return stringBuilder.toString();
}
else {
binaryList.add(x % 2);
return bitConvert(x/2);
}
}
Одно дело, что мне нужно, чтобы иметь binaryList добавить Integer к. В первом условии, когда все будет закончено, мне нужно поместить их в построитель строк. И во втором условии мне нужно добавить их в список. Таким образом, список должен быть глобальным для обоих условий. Но по мере того как функция вызывает себя, список будет повторно инициализирован каждый раз.
Может ли любой совет по наилучшему способу написать эту рекурсивную функцию?
Большое спасибо за любые предложения.
Нет, в рекурсивном решении вам не нужен список вообще. – biziclop
Вам также не нужен список в итеративном решении. Просто добавьте в свой StringBuilder непосредственно в первом цикле. –