这应该不是这么难,但我被卡住了。我们有一个简单的任务,我们正在编写如何获取函数的导数。
(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))
我不确定我正在检查汽车和cdr。整件事情有点令人困惑。那不是给定的代码。我猜汽车和cdr目前有点像占位符。
答案 0 :(得分:3)
这已经有一段时间了,因为我已经完成了计划。我对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))))
答案 1 :(得分:1)
你的代码很难阅读,因为它的格式很奇怪,你应该尝试将不同的东西分成不同的行。如果您正在使用Dr。Racket,您也可以点击Tab,它会相应地排列所有内容,但它不能解决在同一行上有多个问题。
无论如何,这个问题很大程度上取决于如何设置分配以及您希望采取何种输入。您可以使用标签,或者您可以检查指数点中是否有任何内容,或者它是否只是0或1.再次,但它完全取决于输入的给定方式。