Функция получает номер и возвращает количество бит, которое должно было быть , которое должно быть «включено», чтобы представлять входной номер в двоичной базе. Например, число 5 представлено как 101 в двоичном формате и поэтому требует, чтобы два бита были «включены». Мне нужно знать, является ли функция, которую я написал, хвостовой рекурсией. Если нет, как я могу превратить его в рекурсию хвоста? Благодаря!Является ли эта функция схемы рекурсивной?
Моя функция:
(define (numOfBitsOn number)
(define (numOfBitsOn-2 number acc)
(if (> number 0)
(if (odd? number)
(numOfBitsOn-2(/(- number 1) 2) (+ acc (modulo number 2)))
(numOfBitsOn-2 (/ number 2) acc))
acc))
(numOfBitsOn-2 number 0))
Да, это хвост рекурсивный. – uselpa