Я пытаюсь сделать этот код рекурсивным
Первым шагом должна быть попытка заставить код работать.Объявлено, что оно возвращает String
, но никогда не возвращает s
.Кроме того, он легко входит в бесконечный цикл, когда x
становится четным.Итак, давайте заменим ее на эту похожую функцию:
public String findRL(int x) {
String s = "";
while (x > 1) {
if (x % 2 == 0) {
s += "L";
} else {
s += "R";
}
x /= 2;
}
return s;
}
Это может быть не эквивалентно тому, что вы пытались сделать, но должно быть достаточно, чтобы увидеть, как мы можем преобразовать ваш реальный код в рекурсивную функцию:
public String findRL(int x) {
String s = "";
if (x > 1) {
if (x % 2 == 0) {
s = "L";
} else {
s = "R";
}
s += findRL(x / 2);
}
return s;
}
Мы не изменяем оператор if ... else
на рекурсию, а вместо while
цикла, так как рекурсия обычно использует неявный цикл вместо явный цикл в interation .