Задача по Lisp
Формулировка задачи:
В научное сообщество входят N человек. Написать программу, которая определяет, сколько существует возможных вариантов назначить его представителей на K должностей, если известно, что один человек может занимать только одну должность.
Заранее благодарю.
Решение задачи: «Задача по Lisp»
textual
Листинг программы
(defun f (n k) (if (< n (+ k 1)) 1 (* n (f (decf n) k)))) F [2]> (f 3 2) 3 [3]> (f 4 2) 12
Объяснение кода листинга программы
[1] В функции f определены два аргумента n и k.
[2] Условие функции f проверяет, если n меньше или равно сумме k и 1, то возвращается 1.
[3] Если условие не выполняется, то возвращается результат умножения n на результат вызова функции f с аргументами n и k уменьшенным на 1.