如何构建一个看起来像(列表"a" "aa" "aaa" "aaaa" "aaaaa")



要求是使用drracket(scheme)构建列表来生成(list "a" "aa" "aaa" "aaaa" "aaaaa")

我试过foldr但只给出"aaaaa"

(define (build-a-string n)
  (foldr string-append "" (build-list n "a")))
(build-list 5 (lambda (i)
                (make-string (add1 i) #a)))

下面是使用"fold"的解决方案:

#lang racket
(define (build-as n)
  (for/fold ([as '("")]) ([_ n])
    (define last-a (first as))
    (define new-a  (string-append "a" last-a))
    (cons new-a as)))    
(build-as 5)

这是简短的版本:

(define (build-as n)
  (for/fold ([as '("")]) ([_ n])
    (cons (string-append "a" (first as)) as)))

最新更新