【发布时间】:2018-04-12 04:15:13
【问题描述】:
我正在用 Scheme 编写一个程序,但在这一部分上遇到了困难。下面是一个让我的问题清楚的例子
(endsmatch lst) 如果列表中的第一个元素与列表中的最后一个元素相同,则应返回#t,否则返回#f。
例如: (endsmatch '(s t u v w x y z)) 应该返回:#f
和
(endsmatch (LIST 'j 'k 'l 'm 'n 'o 'j)) 应该返回:#t
这是我目前所拥有的(只是错误处理)。我遇到的主要问题是递归地解决这个问题。我知道有一些更简单的解决方案不是递归的,但我需要使用递归来解决这个问题。
到目前为止我的代码:
(define (endsmatch lst)
(if (not(list? lst))
"USAGE: (endsmatch [list])"
(if (or (null? lst)
(= (length lst) 1))
#t
(equal? ((car lst)) (endsmatch(car lst)))
)))
我相信我的代码以“(equal?”开头的代码被破坏并且不起作用。这也是我相信递归将发生的地方。感谢任何帮助!
【问题讨论】:
标签: scheme