【发布时间】:2014-11-16 00:21:46
【问题描述】:
我需要创建一个递归函数,它接受一个对象和一个向量,并返回一个包含在我的对象参数之前的所有对象的列表。
我是这样使用迭代的:
(define (precedes obj vec)
(do ((i 1 (+ i 1))
(list '() (if (eqv? obj (vector-ref vec i))
(cons(vector-ref vec (- i 1)) list)
list)))
((= i (vector-length vec)) list))
)
但是我在试图弄清楚如何使用递归来做同样的事情时遇到了很多麻烦。我很困惑如何在递归调用时不断增加向量。到目前为止,我只有这个:
(define (precedes2 obj vec)
(define list '())
(if (eqv? obj (vector-ref vec i))
(cons(vector-ref vec(- i 1)) list)
list)))
我想我会在 if 语句方面使用我之前使用的相同逻辑,但我不确定现在如何使用更新的向量调用相同的函数。任何帮助都会很棒。
【问题讨论】: