我知道如何计算数字的位数之和:
(define (sum-of-digits x)
(if (= x 0) 0
(+ (modulo x 10)
(sum-of-digits (/ (- x (modulo x 10))
10)))))`
但我只是不知道计算数字。而且也不知道如何通过线性迭代进展来做到这一点。
谢谢!!
我知道如何计算数字的位数之和:
(define (sum-of-digits x)
(if (= x 0) 0
(+ (modulo x 10)
(sum-of-digits (/ (- x (modulo x 10))
10)))))`
但我只是不知道计算数字。而且也不知道如何通过线性迭代进展来做到这一点。
谢谢!!
你非常接近答案。
为了弄清楚如何将数字和变为数字计数,请尝试编写一些测试用例。测试用例必须包括调用函数的示例,以及预期的结果。
附带说明一下,这是生成递归的一个例子,你不应该解决它,直到你完成了一堆问题,比如“在列表中添加数字”、“计算列表中的元素”等.
关于您的每个问题的一些提示:
1
有几种策略可以将递归解决方案(如您的解决方案)转换为尾递归(一种生成线性迭代进度的策略)。这是一个简短的列表: