我尝试了许多方法来解决我的任务,但问题是我想我错过了一些东西或者我错误地使用了某些东西:
我的: 溶液
(define (return l)
(cond ((null? l) '())
( cond (!= (mod n (car l) 0) )
;; here will check if not equal 0 so it is not
return then I will remove it from the list
((eq? n (car l) )
(return (cdr l)) )
(else (cons (car l) (n (cdr l))))
)
(return n (cdr l) ) ;;if not return then I will keep it in the list
)
答案 0 :(得分:1)
解决这个问题的标准方法是使用position.write(str(positionofword) + " ")
,因为它已经做了你想做的事情:
filter
如果这不是一个可接受的解决方案,我们可以使用标准模板遍历列表并构建输出列表:
(define (divisibleByN n lst)
(filter (lambda (e) (zero? (modulo e n))) lst))
无论哪种方式,它都按预期工作:
(define (divisibleByN n lst)
; base case: if the list is empty, return the empty list
(cond ((null? lst) '())
; if the current number is divisible by n
((zero? (modulo (car lst) n))
; add it to output list and advance recursion
(cons (car lst) (divisibleByN n (cdr lst))))
; otherwise just advance recursion
(else (divisibleByN n (cdr lst)))))