在Scheme中查找列表中元素的索引

时间:2015-04-04 19:45:11

标签: scheme

我是Scheme的新手,我不知道从哪里开始。我想编写一个Scheme函数,它接受两个参数,一个列表lst和一个原子atm,并返回列表中atm出现的第一个位置的索引。位置索引是1相对的。如果列表中未出现atm,则函数返回n + 1,其中n是列表的长度。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

这是一个骨架解决方案。将所有<???>替换为适当的项目。

(define (index-of lst x)
  (cond ((null? lst) <???>)
        ((eq? <???> x) <???>)
        (else (+ (index-of <???> x) 1))))

答案 1 :(得分:0)

使用参数列表和初始化为1的索引创建一个辅助过程或命名为let。

如果列表为空或当前汽车是您要查找的元素,则返回索引,否则您使用cdr递归并将索引增加1。