考虑以下计划。它应该采用字符串列表,并返回一个字符串,其字符是每个字符串中的第一个字符。例如,(downward (cons "caa" (cons "abbb" empty))
应该返回"ca"
。为什么我一直收到错误?
(define (downward l)
(cond
[(empty? l) ""]
[else (substring (first l) 0 1
(downward (rest l)))]))
答案 0 :(得分:3)
您正在迭代输入,但忘记将输出的每个部分“粘在一起”。在这种情况下,string-append
将允许您将答案的所有元素组合在一起:
(define (downward l)
(cond
[(empty? l) ""]
[else (string-append (substring (first l) 0 1)
(downward (rest l)))]))
这是它的工作原理:
(downward '("caa" "abbb"))
=> "ca"
第二个想法,问题有点含糊不清。你想要字符串作为输出吗?还是列表?如果它是一个列表,您只需要更改基本案例和“粘贴”过程 - 使用cons
构建列表,就像string-append
对于构建字符串一样:
(define (downward l)
(cond
[(empty? l) empty]
[else (cons (substring (first l) 0 1)
(downward (rest l)))]))
(downward '("caa" "abbb"))
=> '("c" "a")