Из n кандидатов избрать комиссию, состоящую из k человек - Lisp

Узнай цену своей работы

Формулировка задачи:

Народ, помогите плиз надо написать программу на Lispe, а я в нем не особо соображаю. Суть задачи: Требуется из n кандидатов избрать комиссию, состоящую из k человек. Написать программу, которая определяет количество различных возможных вариантов формирования данной комиссии.

Решение задачи: «Из n кандидатов избрать комиссию, состоящую из k человек»

textual
Листинг программы
(defun binomial (n k)
  (if (or (zerop k) (= n k)) 1
      (+ (binomial (1- n) (1- k))
         (binomial (1- n) k))))
 
> (binomial 7 3)
35

Объяснение кода листинга программы

В данном коде представлена реализация вычисления биномиала, который является количеством способов выбрать k элементов из n. Функция binomial принимает два аргумента: n и k. Если k равно 0 или 1, то функция возвращает 1, так как выбрать 0 или 1 элемент из n можно только одним способом. Если k больше 1, то функция рекурсивно вызывает саму себя два раза: 1) Первый вызов с аргументами (1-n) и (1-k), где (1-n) представляет собой n-1, а (1-k) — k-1. Это связано с тем, что количество способов выбрать k элементов из n-1 равно количеству способов выбрать k-1 элементов из n-1, плюс количество способов выбрать k элементов из n-1. 2) Второй вызов с аргументами (1-n) и k. Это число представляет собой количество способов выбрать k элементов из n-1. Суммируя результаты этих двух вызовов, функция возвращает количество способов выбрать k элементов из n. В примере (binomial 7 3) реализуется выбор 3 элементов из 7. По формуле, это равно 7! / (3! * (7-3)!), что равно 35.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.4 из 5
Похожие ответы