(define log2_tail
(lambda (n)
(letrec ((log2 (lambda (n res)
(if (= n 1)
res
(log2 (quotient (+ n 1) 2) (+ 1 res))))))
(log2 n 0))))
(log2_tail 3)
Выше код представляет собой схему хвостовой рекурсии для вычисления целочисленной части базы данных журнала 2. (На самом деле я не уверен). Но если я выполню с аргументом 3, результат будет равен 2 не 1. Я предполагаю, что это потому, что Я использую letrec, тогда как я могу его решить?Схема: Какая ошибка в моем коде рекурсии хвоста?
Не добавляйте 1 при вычислении частного. –
@Terje D. Ой, я не думаю об изменении этой части, спасибо. Тогда мне интересно, что это хвостовая рекурсия. –