【发布时间】:2015-12-31 13:26:02
【问题描述】:
我需要一些帮助来理解如何将数字附加到列表中的语法,我是通过控制台从用户输入中执行此操作的,因此必须递归地输入这些元素。因此,对于输入的任何数字,列表必须随着添加的每个元素(仅数字)而增长。
这是我正在使用的代码,问题在于第二个条件。现在这可行,但只会为我输入的每个数字创建一个空列表,因此结果将是
>12
>202
>30
()()()
zero input: stopping list
(define (inputlist)
(let ((applist list))
(let ((inpt (read)))
(cond
((= inpt 0)(newline) (display "zero input: stopping list"))
;;OLD((number? inpt) (cons inpt applist) (display (applist))(inputlist))
((number? inpt) (append (applist)(list inpt)) (display (applist))(inputlist))
(else
display "Not a number")))))
我明白为什么 cons 没有做我需要做的事情,但是是否有类似的功能可以将每个读入元素附加到预先存在的列表中?
编辑:我已经接近了我需要做的事情,但仍然得到相同的结果,我现在在我的 applist 上附加一个我通过每个输入创建的列表,尽管它仍然会导致尽可能多的空列表当我输入时。
第二次编辑:我已经意识到为什么它打印多个 () 是因为当输入 0 时它被从堆栈中调用,所以我确定它不起作用,因为附加没有按预期工作,我'已经在 0 条件下显示了 applist,它返回一个空列表。
【问题讨论】:
标签: list recursion functional-programming append scheme