gpt4 book ai didi

lisp - 计算 1000 以下的 3 和 5 的倍数之和

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

我编写了以下程序来计算 scheme 中 1000 以下的所有 3 和 5 的倍数之和。但是,它给了我一个不正确的输出。任何帮助将不胜感激。

(define  (multiples)
(define (calc a sum ctr cir)
(cond (> a 1000) (sum)
(= ctr 7) (calc (+ a (list-ref cir 0)) (+ sum a) 0 (list 3 2 1 3 1 2 3))
(else (calc (+ a (list-ref cir ctr)) (+ sum a) (+ 1 ctr) (list 3 2 1 3 1 2 3)))))
(calc 0 0 0 (list 3 2 1 3 1 2 3)))

最佳答案

您可以通过使用累加器(sum 参数)和target 参数来测试何时停止求和,从而简单地将命令式样式的解决方案移植到函数式 Scheme:

(define (multiples)
(define (multiples-iter num sum target)
(if (> num target)
sum
(multiples-iter (+ 1 num)
(if (or (zero? (mod num 3)) (zero? (mod num 5)))
(+ sum num)
sum)
target)))
(multiples-iter 0 0 1000))

关于lisp - 计算 1000 以下的 3 和 5 的倍数之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13993661/

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