Math 如何解决Lisp中的负幂问题

Math 如何解决Lisp中的负幂问题,math,lisp,Math,Lisp,今天,我们在人工智能课上第一次使用LISP。好吧,LISP编译器并不容易获得,所以我们干运行每一个代码 当幂函数被提升为负数时,我目前遇到了一个问题。我问了讲师,他说我应该自己做,并夸口说他会在周三的考试中设置。我在网上搜索,我发现一些教程说它会产生一个错误,你应该输出一个自定义的错误消息,就在那时我想起了Stackoverflow 这是一个我已经做过的示例程序,但是幂是一个正整数 (DE POWER (M N) (COND ((ZEROP N) 1) (T (TIMES M (P

今天,我们在人工智能课上第一次使用LISP。好吧,LISP编译器并不容易获得,所以我们干运行每一个代码

当幂函数被提升为负数时,我目前遇到了一个问题。我问了讲师,他说我应该自己做,并夸口说他会在周三的考试中设置。我在网上搜索,我发现一些教程说它会产生一个错误,你应该输出一个自定义的错误消息,就在那时我想起了Stackoverflow

这是一个我已经做过的示例程序,但是幂是一个正整数

(DE POWER (M N)
   (COND ((ZEROP N) 1)
    (T (TIMES M (POWER M (SUB 1 N)))))
范例

M=4,N=3

现在,如何使用LISP程序解决以下问题

M=4,N=-3


在LISP中是否有处理负幂的函数,或者是否有解决此问题的系统步骤?

M^-N=1/M^N。因此,您可以检查负N并返回1/M^-N

(DE POWER (M N)
   (COND ((ZEROP N) 1)
   ((< N 0) (/ 1 (POWER M (- 0 N))))
   (T (TIMES M (POWER M (SUB 1 N)))))

那是什么方言?DE不是常见的Lisp语法。@Barmar真的吗?我问他DE是什么,他说它是定义。更像是定义一个过程高中数学:x**-y是1/x**y就像PicoLisp。刚刚发现它是Vlisp。我会检查这个
(DE POWER (M N)
   (COND ((ZEROP N) 1)
   ((< N 0) (/ 1 (POWER M (- 0 N))))
   (T (TIMES M (POWER M (SUB 1 N)))))