gpt4 book ai didi

math - Racket /方案中的总和平方

转载 作者:太空宇宙 更新时间:2023-11-03 18:50:20 24 4
gpt4 key购买 nike

我递归地在 racket/scheme 中写总和的平方。该代码正确地对数字求和,但并没有正确地平方。我不知道我做错了什么。如果我超过 10,它应该是 3025。

(define (squareOfSums n)
(if (= n 0)
0
(expt (+ n (squareOfSums (- n 1))) 2)))

最佳答案

您应该只在递归结束时一次进行平方运算。目前,您的代码在每次迭代中。解决此问题的一种方法是将求和部分分离到辅助过程中,并对调用它的结果求平方。像这样:

(define (squareOfSums n)
(define (sum n)
(if (= n 0)
0
(+ n (sum (- n 1)))))
(sqr (sum n)))

此外,您是否知道有一个 formula将所有自然数相加到 n?这是一个更好的解决方案,不需要递归:

(define (squareOfSums n)
(sqr (/ (* n (+ n 1)) 2)))

无论哪种方式,它都按预期工作:

(squareOfSums 10)
=> 3025

关于math - Racket /方案中的总和平方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54431972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com