Scheme 求方案中数字的平方和
我需要在scheme中编写一个函数来计算平方和Scheme 求方案中数字的平方和,scheme,racket,Scheme,Racket,我需要在scheme中编写一个函数来计算平方和 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。我怎样才能解决这个问题 此外,我需要使用此函数来查找停止编号
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,89145
ex :- (stop? 42)
#t
(stop? 31)
#f
如何使用上述数字和的函数sum进行计算?您忘记了实际计算每个数字的平方,有一种更简单的方法获得商:
(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)))
如何定义停止??判断一个数字是否为
#t
的规则是什么?对于问题的第二部分:这看起来像序列,但基本上所有整数在重复相加数字的平方时都会进入序列。因此,stop?
过程将始终是#t
。停止?返回42的#t,因为4^2+2^2=20,并且20是停止编号之一。31返回#f,因为3^2+1^2=10,10不是站号。谢谢你的帮助!另外,您知道我如何使用此函数跟踪数字0,1,4,16,20,37,42,58,89145,并为其返回true(问题的第二部分)?请解释一下,“跟踪数字”是什么意思?如何知道stop?
返回一个数字的#f
?stop返回#t如果数字序列的和总是达到以下数字之一:0,1,4,16,20,37,42,58,89145如果我理解正确,如果我们对其数字重复应用数字之和
,所有整数都将以该顺序结束。例如:3^2+1^2=10
,1^2+0^2=1
,以及1
都在序列中。但是如果我们只应用一次数字之和,那么是的,序列中没有数字。我更新了我对那件事的回答。