方案中的嵌套条件和未指定的 return 值
Nested conditionals and unspecified return value in scheme
我正在尝试编写一个函数,将三个参数中的两个最大值相加。
(定义(a b c的总和)(cond<br>
((和 (>= a b) (>= a c)) (如果 (>= b c) (+ a b) (+ a c)))
((和 (>= b a) (>= b c)) (如果 (>= a c) (+ a b) (+ b c)))
((和 (>= c a) (>= c b)) (如果 (>= a b) (+ a c) (+ b c))))
)
每当我使用该功能时,我都会收到消息 "unspecified return value"。我不知道这里有什么不起作用。即:
(sumhighest 1 2 3)
编辑:有些人指出这段代码对他们有用。我正在使用解释器的 mit-scheme 实现。它在 Ubuntu 18.04 上名为 mit-scheme 的包下。
这可能取决于实现,但正如评论中所述,它对我们中的一些人有效。在没有更多上下文的情况下,我建议您将最后一个条件 (and (>= c a) (>= c b))
替换为 else
。或者切换到不同的解释器:)
我正在尝试编写一个函数,将三个参数中的两个最大值相加。
(定义(a b c的总和)(cond<br>
((和 (>= a b) (>= a c)) (如果 (>= b c) (+ a b) (+ a c)))
((和 (>= b a) (>= b c)) (如果 (>= a c) (+ a b) (+ b c)))
((和 (>= c a) (>= c b)) (如果 (>= a b) (+ a c) (+ b c))))
)
每当我使用该功能时,我都会收到消息 "unspecified return value"。我不知道这里有什么不起作用。即:
(sumhighest 1 2 3)
编辑:有些人指出这段代码对他们有用。我正在使用解释器的 mit-scheme 实现。它在 Ubuntu 18.04 上名为 mit-scheme 的包下。
这可能取决于实现,但正如评论中所述,它对我们中的一些人有效。在没有更多上下文的情况下,我建议您将最后一个条件 (and (>= c a) (>= c b))
替换为 else
。或者切换到不同的解释器:)