首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Scheme语言,如何检查函数是否为指数函数

使用Scheme语言,如何检查函数是否为指数函数
EN

Stack Overflow用户
提问于 2012-11-03 03:07:09
回答 2查看 1.4K关注 0票数 1

这不应该这么难,但我被卡住了。我们有一个简单的赋值,写下如何求函数的导数。

代码语言:javascript
复制
(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。我只是不太确定该怎么写。到目前为止,我只得到了像这样的东西

代码语言:javascript
复制
(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目前只是有点像占位符。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-03 03:19:31

这是相当长的一段时间,因为我已经做了方案。我更熟悉emacs lisp。所以对此持保留态度:

代码语言:javascript
复制
(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))))
票数 3
EN

Stack Overflow用户

发布于 2012-11-05 00:16:36

你的代码很难阅读,因为它的格式很奇怪,你应该试着把不同的东西分开放在不同的行上。如果你正在使用Dr. Racket,你也可以点击tab,它会相应地排列所有东西,但它不会解决在同一行上有多个东西的问题。

无论如何,这个问题在很大程度上取决于赋值是如何设置的,以及您希望接受什么类型的输入。你可以使用标签,或者你可以只检查指数点中是否有任何东西,或者它是否只是0或1。同样,这完全取决于输入是如何给出的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13201548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档