gpt4 book ai didi

lisp - 一个基本的 Lisp 程序错误

转载 作者:太空宇宙 更新时间:2023-11-03 18:42:58 27 4
gpt4 key购买 nike

(define (sum-two-sqrt a b c)

(cond ((and (<= c a) (<= c b)) sqrt-sum(a b))
((and (<= a b) (<= a c)) sqrt-sum(b c))
((and (<= b a) (<= b c)) sqrt-sum(a c))
)
)
(define (sqrt-sum x y)
(+ (* x x) (*y y))
)
(define (<= x y)
(not (> x y))

(sum-two-sqrt 3 4 5)

这是我的代码

请帮我解决这个问题。 :)

我今天才开始学习 Lisp。

之前学过一些 C,但这两种语言非常不同!

这就是问题定义一个过程,它将三个数字作为参数并返回两个较大数字的平方和。

如果你有更好的算法

张贴!

谢谢你:)

最佳答案

无需定义 <= ,这是一个原始操作。修正了几个拼写错误后:

  • sqrt-sum : 你错误地调用了程序;左括号必须写在过程名称​​之前,而不是之后
  • sqrt-sum : (*y y)不正确,你肯定是说 (* y y) ;运算符之后的空格。

这应该有效:

(define (sqrt-sum x y)
(+ (* x x) (* y y)))

(define (sum-two-sqrt a b c)
(cond ((and (<= c a) (<= c b)) (sqrt-sum a b))
((and (<= a b) (<= a c)) (sqrt-sum b c))
((and (<= b a) (<= b c)) (sqrt-sum a c))))

或另一种选择:

(define (sum-two-sqrt a b c)
(let ((m (min a b c)))
(cond ((= a m) (sqrt-sum b c))
((= b m) (sqrt-sum a c))
(else (sqrt-sum a b)))))

关于lisp - 一个基本的 Lisp 程序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12399523/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com