a function median in Scheme

落爺英雄遲暮 提交于 2019-12-02 07:59:28

This problem can be solved using the tortoise and hare algorithm, provided that a helper inner procedure is allowed - we need to pass two parameters for this to work. Other than that, all the restrictions are enforced:

(define (median lst)
  (define (median tortoise hare)
    (cond ((null? hare) 0)
          ((null? (cdr hare)) (car tortoise))
          (else (median (cdr tortoise) (cdr (cdr hare))))))
  (median lst lst))

It works as expected:

(median '(1))       ; returns 1
(median '(1 2))     ; returns 0
(median '(1 2 3))   ; returns 2
(median '(1 2 3 4)) ; returns 0
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!