我是Scheme的新手,我不知道从哪里开始。我想编写一个Scheme函数,它接受两个参数,一个列表lst
和一个原子atm
,并返回列表中atm
出现的第一个位置的索引。位置索引是1相对的。如果列表中未出现atm
,则函数返回n + 1
,其中n
是列表的长度。
我该怎么做?
答案 0 :(得分:1)
这是一个骨架解决方案。将所有<???>
替换为适当的项目。
(define (index-of lst x)
(cond ((null? lst) <???>)
((eq? <???> x) <???>)
(else (+ (index-of <???> x) 1))))
答案 1 :(得分:0)
使用参数列表和初始化为1的索引创建一个辅助过程或命名为let。
如果列表为空或当前汽车是您要查找的元素,则返回索引,否则您使用cdr
递归并将索引增加1。