我想计算Scheme中数字的位数之和。它应该是这样的:如何计算Scheme中一个数字的数字之和?
>(sum-of-digits 123)
6
我的想法是,以数量123
转换为字符串"123"
,然后将其转换为一个列表'(1 2 3)
,然后用(apply + '(1 2 3))
获得6
。
但它不幸没有像我想象的那样工作。
>(string->list(number->string 123))
'(#\1 #\2 #\3)
显然'(#\1 #\2 #\3)
不一样'(1 2 3)
......因为我使用的语言racket
DrRacket下,所以我不能使用功能类似char->digit
。
任何人都可以帮我解决这个问题吗?
生病了来查找INT - >字符串,字符串 - >列表的东西快,但我可以告诉你肯定'apply'心不是你想在这最后一步是什么。使用'fold'(左边或右边在这里没有关系),或者甚至可能有一个本地函数'sum' – 2011-06-15 15:48:48
不,应用程序正常工作。 (应用+'(3 4))产生7 – 2011-06-15 16:09:48
嗯,我想是的,我只是试过解释器。我从来没有真正想过应用这种方式,但我看到它现在如何适合。 – 2011-06-15 16:13:45