За исключением упражнений по построению операций более высокого уровня из побитовых операций, задача, которую вы пытаетесь выполнить, глупа.Не делайте этого.
В качестве упражнения самое важное, что нужно понять, это то, что вам не нужно возвращаться к началу каждый раз, когда вам нужно реализовать что-то новое с точки зрения строительных блоков.Вместо этого вы можете написать функции сложения и вычитания в терминах побитовых строительных блоков и соединить их, используя уже существующий алгоритм более высокого уровня.
Что касается устранения цикла, вы можете просто развернуть его вподдерживать фиксированное максимальное количество цифр (например, самое длинное значение, которое может поместиться в int
), если только вам не нужно поддерживать произвольное число начальных нулей.В целом, рекурсия - очень плохой подход, противоречащий всему аспекту этого упражнения, близкому к металлическому.Возможно, они просто хотят, чтобы вы не добавляли / увеличивали счетчик в цикле с добавлением «высокого уровня», и в этом случае вы можете использовать функцию побитового сумматора ...