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