Recursion 这个方案是递归的吗?
该函数接收一个数字,并返回本应使用的位数 要求为“开”,以二进制表示输入数字。 例如,数字5在二进制中表示为101,因此需要两位“开”。我需要知道我写的函数是否是尾部递归。如果不是,我如何将其转换为尾部递归?谢谢 我的职能:Recursion 这个方案是递归的吗?,recursion,scheme,tail-recursion,bits,Recursion,Scheme,Tail Recursion,Bits,该函数接收一个数字,并返回本应使用的位数 要求为“开”,以二进制表示输入数字。 例如,数字5在二进制中表示为101,因此需要两位“开”。我需要知道我写的函数是否是尾部递归。如果不是,我如何将其转换为尾部递归?谢谢 我的职能: (define (numOfBitsOn number) (define (numOfBitsOn-2 number acc) (if (> number 0) (if (odd? number) (
(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))
DrRacket可以帮助您确定呼叫是否处于尾端位置。单击“语法检查”按钮。然后将鼠标指针移到所讨论表达式的左括号中。在一个示例中,我得到了以下结果: 紫色箭头表示表达式处于尾部位置 从手册中: Tail调用:在 相对于其封闭上下文的尾部位置由 从尾部表达式绘制一个浅紫色箭头到其 周围的表情
是的,它是尾部递归的。