该函数接收一个数字并返回原来的位数 要求“打开”以表示二进制基数中的输入数字。 例如,数字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))