【问题标题】:"application: not a procedure" in determinant code行列式代码中的“应用程序:不是过程”
【发布时间】:2013-08-27 16:02:54
【问题描述】:

应用程序:不是程序; 期望一个可以应用于参数的过程 给定:2 论据...: -4 -6 12 -3 1 2 7

给定以下代码,这个错误是什么意思?

(define (det2x2 a b c d)(- (* a d) (* b c)))
(define (det2x2prod a1 b1 c1 d1 a2 b2 c2 d2)  (det2x2 (+ (* a1 a2)(* b1 c2))
                                                      (+   (* a1 b2)(* b1 d2))
                                                      (+   (* c1 a2)(* d1 c2))
                                                      (+   (* c1 b2) (* d1 d2))))
(det2x2prod 2 (- 4)(- 6) 12(- 3) 1 2 7)
(define (prod-inv a1 b1 c1 d1 a2 b2 c2 d2) not (= 0 (det2x2prod (a1 b1 c1 d1 a2 b2 c2 d2))))
(define (prod-inv-2 a1 b1 c1 d1 a2 b2 c2 d2)not(= 0 (det2x2(a1 b1 c1 d1)(det2x2(a2 b2 c2 d2)))))
(prod-inv   2 (- 4) (- 6) 12 (- 3) 1 2 7)
(prod-inv-2 2 (- 4)(- 6) 12 (- 3) 1 2 7)

*这是我使用方案的第一天

【问题讨论】:

    标签: scheme non-procedure-application


    【解决方案1】:

    您有很多语法错误 - 缺少括号、错误的括号等。您应该在编写下一个过程之前彻底测试每个过程,不要等到有大量代码才开始测试。试试这个:

    (define (det2x2 a b c d)
      (- (* a d) (* b c)))
    
    (define (det2x2prod a1 b1 c1 d1 a2 b2 c2 d2)
      (det2x2 (+ (* a1 a2) (* b1 c2))
              (+ (* a1 b2) (* b1 d2))
              (+ (* c1 a2) (* d1 c2))
              (+ (* c1 b2) (* d1 d2))))
    
    (det2x2prod 2 -4 -6 12 -3 1 2 7)
    
    (define (prod-inv a1 b1 c1 d1 a2 b2 c2 d2)
      (not (= 0 (det2x2prod a1 b1 c1 d1 a2 b2 c2 d2))))
    
    (define (prod-inv-2 a1 b1 c1 d1 a2 b2 c2 d2)
      (not (= 0 (det2x2 a1 b1 c1 d1) (det2x2 a2 b2 c2 d2))))
    
    (prod-inv   2 -4 -6 12 -3 1 2 7)
    (prod-inv-2 2 -4 -6 12 -3 1 2 7)
    

    你想用prod-invprod-inv-2 做什么?我修复了编译错误,但确保它们实现了作业中给出的算法。 prod-inv-2 似乎不正确。

    【讨论】:

    • Stack Overflow 不是 让您完成家庭作业的地方。我向您展示了如何解决语法错误,但正确实现算法取决于您
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 2021-12-07
    • 2013-10-29
    • 2013-03-05
    • 1970-01-01
    相关资源
    最近更新 更多