📅  最后修改于: 2023-12-03 14:44:00.824000             🧑  作者: Mango
Lisp是一种常用于人工智能领域的编程语言,其语法简单、功能强大。而阶乘(factorial)是一个经典的编程问题,本文将介绍在Lisp中如何编写阶乘程序。
阶乘是一个非常基础的数学问题,即求解一个整数n的阶乘,记作n!,公式如下:
n! = n × (n-1) × (n-2) × ... × 1
例如,5的阶乘为:5! = 5 × 4 × 3 × 2 × 1 = 120。通常将0的阶乘定义为1。
在Lisp中,可以使用递归的方法来编写阶乘函数。下面是一个简单的阶乘函数的实现:
(defun factorial (n)
(if (= n 0)
1
(* n (factorial (- n 1)))))
代码解释:
defun
用于定义函数,后面跟着函数名和参数列表,括号中的n
表示该函数只接受一个参数。if
用于条件判断,判断n是否等于0,如果等于0则返回1。(factorial (- n 1))
,并将结果乘以n。在Lisp的REPL中,可以使用(factorial n)
来调用我们编写的阶乘函数。例如,(factorial 5)
将返回120。
下面是一个完整的示例:
CL-USER> (defun factorial (n)
(if (= n 0)
1
(* n (factorial (- n 1)))))
FACTORIAL
CL-USER> (factorial 5)
120
CL-USER>
本文介绍了在Lisp中如何编写阶乘函数,以及如何使用该函数来计算一个整数的阶乘。递归是一种非常强大的编程技术,在Lisp中也得到了广泛的应用。