我写了一个名为的函数(element-at x k)
,它有两个参数:一个 listx
和一个 number k
。它返回列表的第 K 个元素。
例如,表达式(element-at '(a b c d) 3)
返回c
. 然后是一个被调用的函数(remove-at x y)
,它有两个参数:一个列表x
和一个数字k
。它从列表中删除第 K 个元素。例如,表达式(remove-at '(a b c d) 3)
返回(a b d)
.
在(remove-at x y)
我使用了该功能(element-at x k)
但该功能(remove-at x y)
不起作用的定义中,Dr.racket 给我“程序内存不足”,任何人都可以知道原因并尽快修复它吗?
(define (element-at lis k) (if (null? lis) (if (> k 0) #f '()) (let ((head (car lis)) (tail (cdr lis))) (if (< k 2) head (element-at tail (- k 1))))))
(define (remove-at x y) (let ((first (element-at x y)) (tail x)) (if (equal? (car x) first) (append (remove-at x y) (cdr tail)) (cdr tail))))