【问题标题】:How to solve negative Power in Lisp如何解决 Lisp 中的负幂
【发布时间】:2023-03-29 22:59:01
【问题描述】:

今天,我们在人工智能课程中首次使用了 LISP。嗯,LISP 编译器不是现成的,所以我们干运行每个代码。

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

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

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

例子

M = 4,N = 3

(POWER 4 3)
 (TIMES 4 (POWER 4 2))
 (TIMES 4 (TIMES 4 (POWER 4 1)))
 (TIMES 4(TIMES 4(TIMES 4 ( POWER 4 0))))
(TIMES 4(TIMES 4 (TIMES 4 1)))
 (TIMES 4 (TIMES 4 4))
  (TIMES 4 16)
       64

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

M = 4,N = -3

在 LISP 中是否有任何功能可以解决负面权力,或者是否有系统的步骤来解决这个问题?

【问题讨论】:

  • 那是什么 Lisp 方言? DE 不是 Common Lisp 语法。
  • @Barmar 真的吗?我问他什么是DE,他说是DEFINITION。更像是定义一个过程
  • 高中数学:x ** -y1 / (x ** y)
  • 看起来像 PicoLisp。
  • 刚发现是Vlisp。

标签: math lisp


【解决方案1】:

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)))))

【讨论】:

  • 我去看看
猜你喜欢
  • 2017-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 2017-08-06
  • 2016-03-11
相关资源
最近更新 更多