我需要在方案中写一个函数来计算平方位数的和。
ex - (sum-of-digits 130)
> 10这是我的职责。
(define (sum-of-digits x)
(if (= x 0) 0
(+ (modulo x 10) (sum-of-digits (/ (- x (modulo x 10)) 10)))))对某些数字来说是行不通的。当我输入(数字之和130)时,它返回4。如何修复这个问题?
另外,我需要使用这个函数来找出0,1,4,16,20,37,42,58,89,145的停车号码。
ex :- (stop? 42)
#t
(stop? 31)
#f如何使用上面数字和的函数和来完成这个任务?
发布于 2017-03-22 18:29:18
你忘记了每一个数字的平方,还有一种更简单的获得商数的方法:
(define (sum-of-digits x)
(if (= x 0)
0
(+ (sqr (modulo x 10))
(sum-of-digits (quotient x 10)))))关于问题的第二部分:
(define (stop? x)
(let ((sum (sum-of-digits x)))
(if (member sum '(0 1 4 16 20 37 42 58 89 145)) #t #f)))https://stackoverflow.com/questions/42958757
复制相似问题