首页 > 解决方案 > 方案中的嵌套条件和未指定的返回值

问题描述

我正在尝试编写一个函数,将三个参数中的两个最高值相加。

(define (sumhighest a b c) (cond
((and (>= a b) (>= a c)) (if (>= b c) (+ a b) (+ a c))) ((and (>= b a) (>= b c)) (if (>= a c) (+ a b) (+ b c))) ((and (>= c a) (>= c b)) (if (>= a b) (+ a c) (+ b c)))) )

每当我使用该函数时,我都会收到消息“未指定的返回值”。我不知道什么在这里不起作用。IE:

(sumhighest 1 2 3)

编辑:有些人指出这段代码对他们有用。我正在使用解释器的 mit-scheme 实现。它位于 Ubuntu 18.04 上名为 mit-scheme 的包下。

标签: schemesicp

解决方案


这可能取决于实现,但正如评论中提到的,它对我们中的一些人有用。在没有更多上下文的情况下,我建议您将最后一个条件替换(and (>= c a) (>= c b))else. 或切换到不同的解释器:)


推荐阅读