gpt4 book ai didi

lisp - Peter Norvig 的人工智能编程范式中的练习 1.2

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:05 27 4
gpt4 key购买 nike

在 Peter Norvig 的人工智能编程范式的练习 1.2 中,要求读者

Write a function to exponentiate, or raise a number to an integer power. For example: (power 3 2) = 3^2 = 9.

提供的解决方案是这样的:

  (defun power (x n)
(cond ((= n 0) 1)
((evenp n) (expt (power x (/ n 2)) 2))
(t (* x (power x (- n 1))))))

这当然是对的。现在我觉得有点傻,但是他使用的不是他实现的功能的内置版本吗?为什么要使用 expt 来实现 power?或者 exptpower 有什么区别?

最佳答案

看起来他只将它用于最简单的平方数情况,而不是所有一般情况。可能是因为这本书很早,在他教如何绑定(bind)局部变量之前,所以他不想写:

(defun power (x n)
(cond ((= n 0) 1)
((evenp n)
(let ((temp (power x (/ n 2)))
(* temp temp)))
(t (* x (power x (- n 1))))))

它不能使用 (power (power x (/n 2)) 2) 因为这会导致无限递归。尽管这可以通过添加另一个基本案例来解决:

(defun power (x n)
(cond ((= n 0) 1)
((= n 2) (* x x))
((evenp n) (power (power x (/ n 2)) 2))
(t (* x (power x (- n 1))))))

关于lisp - Peter Norvig 的人工智能编程范式中的练习 1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30358487/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com