【发布时间】:2016-01-11 21:54:15
【问题描述】:
我正在尝试更加熟悉 Scheme 中的递归。我已经搜索了问题库并看到了许多“内置”功能,用于在方案列表中查找重复条目,但我正在尝试设计我自己的。我还没有了解“lambda”。我担心的是当我调用递归函数时,汽车元素会被更新。我希望保持不变,但每次都传递一个新的 cdr,因此可以将原始 car 元素与列表中的每个后续元素进行比较。如果匹配,我想返回 #t,如果没有匹配或 cdr 为空(基本情况),我想返回 #f。任何帮助/建议将不胜感激。
(define (findDuplicates list)
(if (null? list)
#f
(if (null? (cdr list))
#f
(if (= (car list) (getCarOfCdr list))
#t
(findDuplicates (cdr list)) //trying to use recursion
)
)
)
)
(define (getCarOfCdr list) //Helper function
(car (cdr list))
)
【问题讨论】: