gpt4 book ai didi

scheme - Racket 中的while循环?

转载 作者:行者123 更新时间:2023-12-03 18:26:42 27 4
gpt4 key购买 nike

我熟悉其他语言中的 while 循环,但在这里我编写了一个小函数来计算项总和的导数,但它只执行前两个我想知道是否有办法改变它以考虑更多2?

表达式,E , 表示为列表,所以 2x + 2y + x^3表示为 (+ (* 2 x) (* 2 y) (expt x 3))
请注意,我已经编写了用于计算指数的函数,但它是总和的一部分,并且在前 2 个之后停止

(define (make-sum v1 v2)
(list '+ v1 v2))

(define (diff-sum x E)
(make-sum (diff x (first-operator E)) (diff x (last-operator E))))

最佳答案

在专业级 Racket 中,for loops是对序列做某事的标准方法。例如,下面生成一个简单的乘法表:

(define numbers (list 1 2 3 4 5 6))
(for/list ([item numbers])
(list item (* item 2) (* item 3)))

这是一个循环,遍历每个数字,处理它,并生成一个新的结果列表。相当标准;几乎每种编程语言都有跨集合迭代的概念。

在您必须为计算机科学入门类(class)编写的那种 Racket 中,您可能不得不求助于显式递归或更高阶函数,例如 map相反,这取决于你的导师。这些其他表达迭代的方式与上述循环具有相同的功能:我们只是用不同的方式表达它。

例如,创建上面的小乘法表的相同计算将用显式递归表示如下:
(define (my-loop numbers)
(cond [(empty? numbers) '()]
[else
(define item (first numbers))
(cons (list item (* item 2) (* item 3))
(my-loop (rest numbers)))]))
(my-loop numbers)

并隐含地使用 map :
(define (f item)
(list item (* item 2) (* item 3)))
(map f numbers)

关于scheme - Racket 中的while循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12966565/

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