scheme - 麻省理工学院计划中值程序

标签 scheme median mit-scheme

在不使用 list-ref 的情况下,您将如何定义一个过程来查找列表的中位数?例如,(median '(1 2 2)) 将返回 2,(median '(1 2 3 4 5 6)) 将返回 3.5。您可以假设它是一个排序整数的列表。

这是一个家庭作业问题,所以请不要发布实际的代码。我所寻找的只是一些提示或一些伪代码来帮助我朝正确的方向前进。正如标题中所述,我正在使用 MIT 方案。提前致谢。

最佳答案

你知道如何使用龟兔赛跑算法吗?如果是这样,在您的算法完成后,您的乌龟将位于列表的中间。

如果您真的陷入困境,I have a working implementation 。或者,这是一些类似伪代码的东西:

(define (median lst)
  (if (null? lst) #f                         ;; oops, empty list
      (let loop ((tortoise <???>)
                 (hare <???>))
        (cond ((eq? tortoise hare) #f)       ;; oops, circular list
              ((null? hare) <???>)           ;; median value here
              ((null? (cdr hare)) <???>)     ;; average of middle two elements
              (else (loop <???> <???>))))))  ;; keep going

关于scheme - 麻省理工学院计划中值程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15445863/

相关文章:

list - 在返回方案中列表最小值的简单脚本中,我的解决方案仅返回列表的第一个值。有什么问题?

java - 有没有一种方法可以直接循环遍历 Kawa 中的 Java Iterable 或者循环遍历 java.util.Iterator

scheme - Guile Scheme 解释器中奇怪的乘法行为

lisp - mit 方案 vim slimv : "read-error: no dispatch function defined for #\F"

math - 在处理 SICP 之前,我的数学背景应该有多深?

linux - 使用移动窗口 bash 脚本的中值

r - 是否有一种 RAM 有效的方法来计算补集的中位数?

r - 如何在 R 中编写 Mood 中值检验的排列等价代码? (使用排列获得 p 值)

mit-scheme - 如何为 mit-scheme 配置 SublimeREPL?

c - 用 C 语言编写打印方法