Вычисление биномиального коэффициента - 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.
Объяснение кода листинга программы
- bc(_,0,1):- !. - Предполагается, что данная строка кода вычисляет биномиальный коэффициент для N=0 и M=1, и результат этого вычисления равен 1.
- bc(N,N,1):- !. - В данной строке кода предполагается, что если 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. - В данной строке кода предполагается, что биномиальный коэффициент вычисляется рекурсивно путем вычитания единицы из M и N, и затем прибавления результатов двух вызовов функции bc для M1 и N1, и M1 и N. Значение R1 и R2 складываются и присваиваются переменной R.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д