方案二次函数/平方根检查

用户3241846

我想做一个函数,其中rootcheck有一个列表L作为输入,L总是3个原子(abc),其中a是x ^ 2的系数,x的b coef和c是常数。它使用判别式(b ^ 2-4ac)检查方程是否为二次方程,并应输出此方程(num'L),其中num是根的数目,L是包含根本身的列表(使用二次公式),L没有根的情况下为空。这是我的代码:

(define roots-2
    (lambda (L)
    (let ((d (- (* (cdr L) (cdr L)) (4 (car L) (caddr L))))))
    (cond ((< d 0)  (cons(0 null)))
    ((= d 0) (cons(1 null)))
    (else((> d 0) (cons(2 null)))))
            ))

它没有给我表达身体错误。

我也尝试对二次函数进行编码,甚至尝试了一些在线函数,一个已编译的fint,但是在我插入输入时给了我一个错误,这是二次函数的代码,不是我的!

(define quadratic-solutions
 (lambda (a b c) (list (root1 a b c) (root2 a b c))))
(define root1
 (lambda (a b c) (/ (+ (- b) (sqrt (discriminant a b c)))
 (* 2 a))))
(define root2
 (lambda (a b c) (/ (- (- b) (sqrt (discriminant a b c)))
 (*2 a)))) 
(define discriminant
 (lambda (a b c) (- (square b) (* 4 (* a c)))))
奥斯卡·洛佩兹(Oscar Lopez)

代码中有几个错误:

  • 某些括号放置不正确,请使用良好的IDE来检测此类问题。这导致报告错误,let没有主体
  • 你忘了在繁殖4ac部分
  • 您错误地访问了列表中的第二个元素
  • else部分不能有一个条件
  • 输出列表的构造不正确

这应该可以解决错误,现在替换null为对第二种和第三种情况计算根的函数的实际调用(这种(< d 0)情况就可以了):

(define roots-2
  (lambda (L)
    (let ((d (- (* (cadr L) (cadr L)) (* 4 (car L) (caddr L)))))
      (cond ((< d 0)  (list 0 null))
            ((= d 0)  (list 1 null))
            (else     (list 2 null))))))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档