Binominalkoeffizient rekursiv selber berechnen, wie soll das genau gehen? (java)?
Ich habe z. B. n über k
Ich weiß, dass wen n kleiner k oder k kleiner 0 ist, ich einfach return 0 machen kann, in der Methode, die meinen Binominialkoeffizienten hat. und wenn n gleich 0 ist, kann ich einfach return 1 machen.
Wie sieht es jetzt jedoch aus, wenn ich es rekursiv lösen will?
Ich konnte mir schon denken, dass man
(n-1 über k-1) +(n-1 über k-1) rechnet, aber wie würde ich genau das als code schreiben? Bei unserer Aufgabe hat unser Lehrer uns schon vorgegeben wie wir den Binominalkoeffizienten rechnen können, ohne es so rekursiv machen zu müssen. Da gibt es schon irgendwie eine vorgefertigte Kalsse in der Bibliothek von Java.
Aber fürs Verständnis wollte ich mal sehen, wie der Code aussehen würde, wenn man den letzten Schritt selber machen würde, will nur gerne mal testen, ob das gleiche rauskommt.
2 Antworten
kennst du google ? musst du lernen als programmierer , den das wurde alles schon mal gelösst https://www.google.com/search?q=Binominalkoeffizient+rekursiv+java
erstes ergebnis :
https://www.java-forum.org/thema/binomialkoeffizient-rekursiv-berechnen.94228/
das sind ja alles nur mathematische probleme , sollen ja auch nur trainieren , brauch man dann später weniger . ich finde solche aufgaben irgendwie nie nett . hindern einen das programmieren zu lernen weil man ewig auf die mathe runtergebrochen wird . aber da hat jeder prof etc sein eigenen vorstellungen . finde ich sortierungen etc schon besser um rekursionen zu lernen, da es auch sehr komplex werden kann bei mathematischen problemen .
Ach ne sorry bei mir hat die Seite nur gehangen, die haben das doch normal berechent
Das sollten wir eig. auch nicht rekursiv lösen, unser Prof meinte nur dass es geht und man sich ja mal Gedanken machen kann. Aber im Internet nutzen auch alle die vorgefertigte Methode von java
Aber da wird der Binomialkoeffizient auch ncith rekursiv berechent, sondern die nutzen eine schon vorgefertigte methode, die Java zur Verfügung stellt
Schönen guten Abend,
Leider kann ich Java nur sehr schlecht, für solche Berechnungen nutze ich meistens Python. Deine Aufgabe wird also sein, folgenden Algorithmus in Java zu schreiben.
Ich gehe davon aus, dass die Fakultät rekursiv berechnet werden soll. Daher habe ich 2 Funktionen verwendet. Erstere fk berechnet rekursiv die Fakultät der übergebenen Zahl, zweitere bk errechnet zunächst mithilfe von fk die Fakultät und berechnet daraus anschließend den Binomialkoeffizienten.
def fk(n):
return 1 if n == 0 else n * fk(n - 1)
def bk(n, k):
return fk(n) / (fk(k) * fk(n - k))
print(bk(3, 1))
In diesem Falle wird der Binomialkoeffizient von 3 über 1 berechnet. Du könntest den Code auch dahingehend erweitern, dass keine negativen Zahlen übergeben werden dürfen.
LG