Re: F# и хвостовая рекурсия
От: samius Япония http://sams-tricks.blogspot.com
Дата: 30.10.19 23:12
Оценка: 9 (1)
Здравствуйте, zverjuga, Вы писали:

Z>в чем ошибка? спасибо

Каждая ветка в ветвлении хвосторекурсивной функции должна заканчиваться либо возвратом из функции, либо рекурсивным вызовом. За рекурсивным вызовом вообще не должно быть никаких действий. Т.е. надо вернуть результат рекурсивного вызова и более ничего с ним не делать.

Здесь же в хвосторекурсивной функции за каждым рекурсивным вызовом markBits идут еще вызовы (кроме последнего).

Самое простое, что можно предпринять — вывести номер вызова в дополнительный параметр-счетчик, отматчить его и сделать один соответствующий рекурсивный вызов в каждом ветвлении.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.