Warum ist meine Lösung zum Binomialkoeffizienten Absturz? Ich habe wirklich versucht, Rekursion zu lernen, aber ich denke immer noch, dass ich darüber nicht klar bin. Ich frage mich, ob jemand mir helfen kann, Rekursion zu lernen und rekursiv zu denken?Binomialkoeffizient rekursive Lösung in C
Selbst wenn ich einen guten Basisfall schreibe, stürzt mein Programm ab. Jeder Link, um Rekursion mit klarer Demonstration zu lernen, wäre sehr hilfreich für mich.
Hier ist mein Code für Binomialkoeffizienten, und ich bin nicht in der Lage, den Bug/Fehler zu finden, auf der Suche nach Ihrer Hilfe.
Code:
#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;
}
in diesem Teil: m = binomischer (n-1, m); n = Binomial (n-1, m-1); Sie können Ihren m-Wert nicht durch das neue Ergebnis ersetzen, weil Sie den ursprünglichen m-Wert für den zweiten binominalen Aufruf benötigen. – algojava
@David Hoelzer danke für Ihre Hilfe, aber jetzt habe ich eine Änderung in meinem Code, würden Sie bitte sehen, warum es immer noch nicht funktioniert?hier ist der code: –
#include lang lang m, n, ergebnis, o, p; lange lange binomial (lange lange n, lange lange m) { if (n == m) zurück 1; else { if (m == 0) return 1; else { o = Binomial (n-1, m); p = Binomial (n-1, m-1); Rückgabe o + p; } } } int main() { printf ("Bitte geben Sie den Wert von n: \ n"); scanf ("% LLD" &n); printf ("Jetzt ist der Wert von m eingeben: \ n"); scanf ("% LLD", &m); result = binomischen (n, m); printf ("Resultierende Binomialverteilung Koeffizient:% lld \ n ", Ergebnis); return 0; } –