gpt4 book ai didi

scheme - 有没有办法在方案中使用 cons 来制作 lat?

转载 作者:行者123 更新时间:2023-12-02 04:24:04 24 4
gpt4 key购买 nike

我有这段简单的代码,构建一个数字列表:

#lang scheme

(define pseudofizzbuzz (lambda (x)
(cond
((zero? x) (quote ()))
((or (integer? (/ x 3)) (integer? (/ x 5))) (cons (quote ()) (pseudofizzbuzz (- x 1))))
(else (cons x (pseudofizzbuzz (- x 1)))))))

(define reverselist (lambda (lat)
(cond
((null? lat) (quote ()))
(else
(cons (reverselist (cdr lat)) (list (car lat)))))))


(reverselist (pseudofizzbuzz 10))

我得到的结果是:

 ((((((((((() 1) 2) ()) 4) ()) ()) 7) 8) ()) ())

但我想要的当然是:

(1 2 4 7 8)

有什么办法可以在方案中做到这一点吗?我正在使用 DrRacket。

最佳答案

使用(cons an-element a-list)使用新元素an-element扩展a-list:

#lang racket

(define pseudofizzbuzz
(lambda (x)
(cond
((zero? x)
(quote ()))
((or (integer? (/ x 3)) (integer? (/ x 5)))
(pseudofizzbuzz (- x 1)))
(else
(cons x (pseudofizzbuzz (- x 1)))))))

(define reverselist
(lambda (lat)
(cond
((null? lat)
(quote ()))
(else
(cons (reverselist (cdr lat)) (list (car lat)))))))

(pseudofizzbuzz 10)

这会以相反的顺序产生结果,因此

(reverse (pseudofizzbuzz 10))

将以正确的顺序为您提供元素。

关于scheme - 有没有办法在方案中使用 cons 来制作 lat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41066051/

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