So, nun nochmal. Ich scheine mich wohl nicht nur während irgendwelchen Mathearbeiten grundsätzlich irgendwo zu verrechnen. Scheint wohl irgendwo erblich veranlagt zu sein. Zu dem viel zu hohen Zwischenergebnis: falsch Optimiert. Ich hab das falsche gekürzt, weil ich dachte, dass sich das andere irgendwie anders errechnet. War aber nicht so.
Zu dem total falschen Ergebnis: 7! / 6! = 7 und nicht 42, was meine Routine fakultaet2 errechnet hat.
Delphi-Quellcode:
function fakultaet2(start, ende: integer): extended;
var
i: integer;
begin
Result := start + 1;
for i := (start + 2) to ende do
begin
Result := Result * i;
end;
end;
function fakultaet(N: integer): Extended;
var i: Integer;
begin
Result := 1;
for i := 1 to trunc(N) do
Result := Result * i
end;
function nueberk(n, k: integer): Extended;
begin
// alte Funktion
Result := fakultaet(n) / (fakultaet(n - k) * fakultaet(k));
// die jetzt hoffentlich richtige
Result := fakultaet2(n - k, n) / (fakultaet(k));
end;
Zu dem "was soll das?": ja, errare humanus est. Ich habe insgesamt jetzt 3 Fehler gemacht. Wenn noch einer einen findet, sind es mehr. Fehler 1: Größer/Kleiner habe ich schon in der Grundschule mir nur per Merkregel merken können. In der 6. Klasse habe ich eine andere Merkregel gelernt, die ich jetzt immernoch verwende. Fehler 2 war die falsche Fakultät und Fehler 3 war das Nicht-Nachrechnen des Ergebnisses.
Das zu meinen Fehlern. Wie viele machst du?
Bernhard