Здравствуйте, zverjuga, Вы писали:
Z>в чем ошибка? спасибо
Каждая ветка в ветвлении хвосторекурсивной функции должна заканчиваться либо возвратом из функции, либо рекурсивным вызовом. За рекурсивным вызовом вообще не должно быть никаких действий. Т.е. надо вернуть результат рекурсивного вызова и более ничего с ним не делать.
Здесь же в хвосторекурсивной функции за каждым рекурсивным вызовом markBits идут еще вызовы (кроме последнего).
Самое простое, что можно предпринять — вывести номер вызова в дополнительный параметр-счетчик, отматчить его и сделать один соответствующий рекурсивный вызов в каждом ветвлении.