1 scheme position element list
我需要创建一个函数,它从给定位置给出的列表中返回一个元素。例如,该列表中第三个位置的元素 (2 4 3 5) 将为 3。
我有这段代码,但它没有运行。
(define (getElement lst pos)
(if (= pos 0)
(car lst))
(if (> pos 0)
(getElement (cdr lst) (- pos 1))))
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
您正在查找的过程称为list-ref- 请记住索引是从零开始的,因此“第三个”元素将位于 index 2。例如:
(list-ref '(2 4 3 5) 2)
=> 3
Run Code Online (Sandbox Code Playgroud)
现在,如果您想从头开始实施该过程,则必须考虑三种情况,您当前的解决方案离正确不远了。问你自己:
#f)或发出错误信号我会给你一些提示,请注意,使用 acond而不是嵌套ifs 更容易编写。填空:
(define (getElement lst pos)
(cond ((null? lst) <???>)
((= pos 0) <???>)
(else (getElement <???> <???>))))
Run Code Online (Sandbox Code Playgroud)
它的工作原理就像list-ref:
(getElement '(2 4 3 5) 2)
=> 3
Run Code Online (Sandbox Code Playgroud)