【发布时间】:2015-10-29 18:19:51
【问题描述】:
该函数接收一个数字并返回本应包含的位数 必须为“on”才能以二进制表示输入数字。 例如,数字 5 在二进制中表示为 101,因此需要两个位为“on”。我需要知道我写的函数是否是尾递归。如果没有,我怎样才能把它变成尾递归?谢谢!
我的功能:
(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))
【问题讨论】:
-
是的,它是尾递归的。
标签: recursion scheme tail-recursion bits