Вычисление биномиального коэффициента - Prolog

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

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

Я в Прологе ещё пока что только начинаю, поэтому не могу понять, почему оно возвращает false? Запускаю не в программе, а в онлайн компиляторе. Помогите, пожалуйста, понять, в чём проблема. Само задание звучит так: Напишите рекурсивную процедуру C(M,N) (0 ≤ m ≤ n ) для вычисления биноминального коэффициента по формуле: C(m,0)=C(n,0)=C(n,n)=1 C(m,n)=C(m−1,n−1)+C(m−1,n)

Решение задачи: «Вычисление биномиального коэффициента»

textual
Листинг программы
bc(_,0,1):- !.
bc(N,N,1):- !.
 
bc(M,N,R):-
    M1 is M - 1,
    N1 is N - 1,
    bc(M1,N1,R1),
    bc(M1,N,R2),
    R is R1+R2.

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

  1. bc(_,0,1):- !. - Предполагается, что данная строка кода вычисляет биномиальный коэффициент для N=0 и M=1, и результат этого вычисления равен 1.
  2. bc(N,N,1):- !. - В данной строке кода предполагается, что если N=N, то результат также равен 1.
  3. bc(M,N,R):- M1 is M - 1, N1 is N - 1, bc(M1,N1,R1), bc(M1,N,R2), R is R1+R2. - В данной строке кода предполагается, что биномиальный коэффициент вычисляется рекурсивно путем вычитания единицы из M и N, и затем прибавления результатов двух вызовов функции bc для M1 и N1, и M1 и N. Значение R1 и R2 складываются и присваиваются переменной R.

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


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

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

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