Почему мое решение биномиального коэффициента падает? Я действительно пытался научиться рекурсии, но я все еще думаю, что я не совсем понимаю об этом. Интересно, может ли кто-нибудь помочь мне узнать о рекурсии и как думать рекурсивно?Рекурсивное решение для биномиального коэффициента в C
Даже когда я пишу хороший базовый чехол, моя программа вылетает. Любая ссылка для изучения рекурсии с четкой демонстрацией была бы очень полезной для меня.
Вот мой код для биномиального коэффициента, и я не могу найти ошибку/ошибку, ища вашу помощь.
Код:
#include<stdio.h>
long long m,n,o,p,result;
long long binomial(long long n,long long m)
{
if(n==m)
return 1;
else {
if(m==0)
return 1;
else {
o=binomial(n-1,m);
p=binomial(n-1,m-1);
return o+p;
}
}
}
int main()
{
printf("Please Enter The Value Of n:\n");
scanf("%lld",&n);
printf("Now Enter The value of m:\n");
scanf("%lld",&m);
result = binomial(n,m);
printf("Resultant Binomial coefficient: %lld\n",result);
return 0;
}
в этой части: т = бином (п-1, м); п = биномиальное (п-1, м-1); вы не можете заменить свое значение m новым результатом, потому что вам нужно исходное значение m для второго биномиального вызова. – algojava
@ Давид Хольцер благодарит вас за помощь, но теперь я внес изменения в свой код, не могли бы вы понять, почему он все еще не работает?вот код: –
#include long long m, n, result, o, p; длинный длинный биномиальный (длинный длинный n, длинный длинный m) { if (n == m) return 1; else { if (m == 0) return 1; else { o = биномный (n-1, m); p = биномиальный (n-1, m-1); return o + p; }} } INT основной() { Е ("Пожалуйста, введите значение п: \ п"); зсап ("% LLD", &n); Е ("Теперь введите значение т: \ N"); зсап ("% LLD", &m); результата = биномиальный (п, т); Е ("Результирующая Биномиального коэффициент:% lld \ n ", result) return 0; } –