这不应该这么难,但我被卡住了。我们有一个简单的赋值,写下如何求函数的导数。
(define (derive exp var)
(cond ((number? exp) 0)
((variable? exp) (if (same-variable? exp var) 1 0))
((sum? exp) (derive-sum exp var))
((product? exp) (derive-product exp var))
((exponentiation? exp) (derive-exponentiation exp var))
(else 'Error)))但是对于求幂,如果我有一个指数函数,它需要返回true。我只是不太确定该怎么写。到目前为止,我只得到了像这样的东西
(define (make-exponentiation base exponent)
(cons base exponent)
(define (base exponentiation)
(car exponentiation)
(define (exponent exponentiation)
'cdr exponentiation)
(define (exponentiation? exp)
'YourCodeHere)
(define (derive-exponentiation exp var)
(* var (make-exponentiation exp (var-1)) (derive exp))我不太确定我正在检查有关car和cdr的内容。整件事就是有点让人迷惑。这不是给定的代码。我猜car和cdr目前只是有点像占位符。
发布于 2012-11-03 03:19:31
这是相当长的一段时间,因为我已经做了方案。我更熟悉emacs lisp。所以对此持保留态度:
(define (make-exponentiation base exponent)
(list '^ base exponent))
(define (base exponentiation)
(car (cdr exponentiation)))
(define (exponent exponentiation)
(car (cdr (cdr exponentiation))))
(define (exponentiation? exp)
(equal? (car exp) '^))
(define (derive-exponentiation exp var)
(let ((b (base exp))
(e (exponent exp)))
(make-product e (make-exponentiation b (- e 1))))发布于 2012-11-05 00:16:36
你的代码很难阅读,因为它的格式很奇怪,你应该试着把不同的东西分开放在不同的行上。如果你正在使用Dr. Racket,你也可以点击tab,它会相应地排列所有东西,但它不会解决在同一行上有多个东西的问题。
无论如何,这个问题在很大程度上取决于赋值是如何设置的,以及您希望接受什么类型的输入。你可以使用标签,或者你可以只检查指数点中是否有任何东西,或者它是否只是0或1。同样,这完全取决于输入是如何给出的。
https://stackoverflow.com/questions/13201548
复制相似问题