我是计划的新手,有人可以给我一些关于如何获得的想法,“列表中的中间元素?”
答案 0 :(得分:4)
这是我的解决方案。它基于tortoise-and-hare algorithm(用于任何类型的列表遍历,您需要检测循环列表),因此它不会做任何工作而不是理想的遍历列表遍历。 : - )
(define (middle-elements lst)
(if (null? lst) '()
(let loop ((tortoise lst)
(hare (cdr lst)))
(cond ((eq? tortoise hare) #f)
((null? hare) (list (car tortoise)))
((null? (cdr hare)) (list (car tortoise) (cadr tortoise)))
(else (loop (cdr tortoise) (cddr hare)))))))
它涵盖以下情况:
#f
。