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。我怎样才能解决这个问题 此外,我需要使用此函数来查找停止编号

我需要在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。我怎样才能解决这个问题

此外,我需要使用此函数来查找停止编号,即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
都在序列中。但是如果我们只应用一次数字之和,那么是的,序列中没有数字。我更新了我对那件事的回答。