1
該函數接收一個數字,並返回爲了表示二進制基數中的輸入數而需要「打開」的位數 。 例如,數字5在二進制中表示爲101,因此需要兩位「打開」。我需要知道我寫的函數是尾遞歸。如果沒有,我怎麼能把它變成尾遞歸?謝謝!這個Scheme是否函數尾遞歸?
我的功能:
(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