Решение бинарного разрыва с использованием рекурсииJAVA

Программисты JAVA общаются здесь
Anonymous
Решение бинарного разрыва с использованием рекурсии

Сообщение Anonymous »

Я пытаюсь решить проблему бинарного разрыва, используя рекурсию. Это может быть легко решено без рекурсии. Но я хочу решить это с помощью рекурсии. Приведенная ниже программа принимает целое число в качестве ввода и находит бинарный разрыв. < /P>

Пример: < /p>

input= 9, Binary form = 1001, Answer = 2

input=37, Binary form = 100101, Answer = 2
< /code>

Он находит максимальное количество нулей, которое происходит между двумя 1 в двоичном представлении. < /p>

Я хочу решить это в O (logn). Прямо сейчас приведенная ниже программа просто подсчитывает общее количество нулей и дает выход 3 вместо 2. Как исправить это, чтобы получить правильный выход? < /P>

class BinaryGap {

public int solution(int N){

return solution(N, false, 0);
}
public int solution(int N, boolean prevFlag, int memo) {

if(N memo)
memo = newGap;
}
} else {

prevFlag = (remainder == 1);
return solution(N/2, prevFlag, 0);
}

return memo;

}

public static void main(String args[]){
BinaryGap obj = new BinaryGap();

System.out.println(obj.solution(37));
}

}


Подробнее здесь: https://stackoverflow.com/questions/355 ... -recursion

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