今天,我们在人工智能课程中首次使用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中的负面权力,还是有系统的步骤来解决这个问题?
答案 0 :(得分:4)
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)))))